无论好坏,我都需要删除父记录(硬删除)并将所有孩子的parentid值设置为null。
如果我在SQL中这样做,它将是这样的:
UPDATE ChildTable SET ParentID = NULL WHERE ParentID = 1
DELETE ParentTable WHERE ID = 1
因此,在EF中他们已经连接......通过myParentEntity.ChildrenEntities
有没有办法在EF中批量执行此操作?当前实现是集合上的foreach
并在每个集合上调用更新,这会导致可怕的SQL操作。
答案 0 :(得分:0)
EF并不是SQL的直接替代品。它旨在使单个记录的使用变得容易。因此,它将为每条记录发出单独的命令。 EF不是批量操作的正确工具。
EF会自动将ParentId属性设置为null,只要您已将所有子项加载到内存中即可。但是,此方法仍将发出单独的更新。有关详细信息,请参阅EntityFramewok: How to configure Cascade-Delete to nullify Foreign Keys