EF新手,我有一个问题。
好的,所以,我有一个具有相关表的实体(一对多关系)。该实体包含相关表中的子对象的集合。我想从相关集合中删除一个对象,但不从子表中删除。
然而,当我调用<entity>.myRelatedChildTable.Remove( childEntity )
然后调用_context.SaveChanges( )
时,我得到一个关于ForeignKey Constraints的异常。现在,如果我拨打_context.DeleteObject()
然后_context.SaveChanges()
,我们就没有问题了。但是,现在我们也没有子实体 - 它将从数据库中删除。
这是Exception的文本: 操作失败:由于一个关系无法更改 或者更多的外键属性是不可为空的。当变化是 对关系进行处理后,相关的外键属性设置为null 值。如果外键不支持空值,则为新关系 必须定义外键属性必须另外指定非null 必须删除值或不相关的对象。
任何人都有一个想法/建议如何解决这个问题?
答案 0 :(得分:1)
听起来你基本上试图将EF与数据库分离。不幸的是,保存更改会将更改推送回数据库,这显然是您不想要的。您不能调用SaveChanges并继续使用该集合。 EF将说明您的删除并且不会返回该信息。最后,您可以放弃更改并继续。
如果您确实要删除该项而不删除该项,则无法在当前架构中删除该项。您必须在DB中允许空值。