我有下面的类实体框架 - 删除N:N关系
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; }
}
我在做什么错?
谢谢。
看起来你的映射有些问题,因为EF认为关系是1:N。你的ObjectB是如何定义的? –
@LadislavMrnka:edmx中根本没有ClassB。新增定义。谢谢, – Jeb
如果您在架构中有ClassAClassB,则您没有映射M:N关系。您改为具有两个1:N关系,并且您的ClassA和ClassB必须具有指向ClassAClassB的导航属性。为什么你有ClassAClassB映射?它是否包含除FK之外的其他内容? –