1

我有以下课程

public class ObjectA{
   private List<ObjectB> list;    
}

ObjectA并且ObjectB处于 N:N 关系。

我只想删除关系并使用

 while (objectA.list.Any())
        objectA.list.Remove(objectA.list.First());
  • 列表是关系表 -

    List<ObjectAobjectB>
    

我得到

操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新的关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。

编辑:更新模型定义
我的模型中有三个表:
* ClassA - SchemaA,
* ClassAClassB - SchemaA,
* ClassB - SchemaB,

在我的上下文(和 edmx)中,我只有模式 A(ClassA 和 ClassAClassB)
,因为它与关系表是 1:N。

这是从 edmx 生成的代码。

public partial class ClassA:DomainEntity
{
    ....
    public virtual ICollection<ClassB>  ClassAClassB { get; set; }
}

我究竟做错了什么?

谢谢。

4

1 回答 1

1

如果您与不可为空的 FK 具有一对多关系,您还必须删除 ObjectB,因为从导航属性中删除它只会删除关系(使 FK 为空),但不会删除 ObjectB 本身。尝试这个:

 while (objectA.list.Any()) {
     var b = b;
     objectA.list.Remove(b);
     entities.DeleteObject(b);    
 }
于 2013-01-17T10:58:44.967 回答