【发布时间】:2013-05-07 12:25:56
【问题描述】:
我有主表和详细表。例如主表是ObjectSet<'MasterObject>,明细表是ObjectSet<'DetailObject>。所以每个MasterObject 都包含EntityCollection<'DetailObject>。
据我了解,我可以使用以下方法从数据库中删除 DetailObject:
-
EntityCollection<'DetailObject> ec = masterObject.DetailObjects;// 作为导航属性 -
ec.Remove(deleting_detail_object);// 删除detail_object 将被删除并标记为删除。 -
context.SaveChanges();// 我有异常
在Remove() 之后,deleting_detail_object.MasterObject(导航属性)是null。这是正常的。但是context.SaveChanges() 给我以下异常:
"操作失败:无法更改关系,因为 一个或多个外键属性不可为空。当一个 对关系进行更改,相关的外键属性是 设置为空值。如果外键不支持空值, 必须定义一个新的关系,外键属性必须是 分配了另一个非空值,或者不相关的对象必须是 已删除。”
我可以使用context.RemoveObject() 删除这个DetailObject,但是可以使用EntityCollection<> 来删除吗?
【问题讨论】:
标签: c# entity-framework