1

无论好坏,我都需要删除父记录(硬删除)并将所有孩子的 parentid 值设置为 null。

如果我在 SQL 中执行此操作,它将是这样的:

UPDATE ChildTable SET ParentID = NULL WHERE ParentID = 1
DELETE ParentTable WHERE ID = 1

因此,在 EF 中,它们是相互连接的……孩子们通过myParentEntity.ChildrenEntities

有没有办法在 EF 中批量执行此操作?当前的实现是对集合的foreach过度调用并在每个集合上调用更新,这会导致糟糕的 SQL 操作。

4

1 回答 1

0

EF 并不意味着直接替代 SQL。它旨在使处理个人记录变得容易。因此,它将为每条记录发出单独的命令。EF 不是批量操作的正确工具。

只要您已将所有子项加载到内存中,EF 就会自动将 ParentId 属性设置为 null。但是,此方法仍会发布单独的更新。有关详细信息,请参阅EntityFramewok:如何配置级联删除以使外键无效

于 2013-11-11T14:10:44.420 回答