gpt4 book ai didi

entity-framework - Entity Framework DeleteObject 子项

转载 作者:行者123 更新时间:2023-12-05 09:25:33 26 4
gpt4 key购买 nike

使用 EF 删除对象(及其子对象)的最佳方法是什么?我只想传递要删除的对象的 ID,并让 EF 处理删除其依赖数据(外键数据)。是否必须先根据 id 检索对象,然后调用“DeleteObject”?

最佳答案

如果你在数据库中配置了级联,那么删除原理应该就可以了。

您可以在不查询数据库的情况下使用 stub 实体获取要删除的内容,如下所示:

var stub = new Principal{ID = idToDelete};
ctx.AttachTo("PrincipalsEntitySetName", stub);
ctx.DeleteObject(stub);

当然,这还不是全部,如果有用于并发检查的引用或字段,您也将需要它们。

另一方面,如果模型中只有级联删除(即数据库中没有级联),则需要先获取内存中的所有依赖项,然后调用删除:

var stub = new Principal{ID = idToDelete};
ctx.AttachTo("PrincipalsEntitySetName", stub);
stub.Dependendents.Load();
ctx.DeleteObject(stub);

这只有效,因为 EF 发出(它期望的)冗余删除以使 ObjectContext 与它期望在数据库中发生的事情保持同步。

希望对你有帮助

亚历克斯

PS 我有一些 tips关于我的 MSDN 博客上的这个主题。查看tip 33 (级联删除)和 tip 26 ( stub 实体)

关于entity-framework - Entity Framework DeleteObject 子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1359542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com