gpt4 book ai didi

entity-framework - 删除 Entity Framework 中的所有相关实体

转载 作者:行者123 更新时间:2023-12-04 05:52:21 25 4
gpt4 key购买 nike

我有一个名为 Entry 的实体连接到多个 TimeWindows。我想清除所有时间窗口,然后添加新窗口。起初我试过:

target.TimeWindows.Clear();

但这并没有真正删除它们,只是试图删除关系,这导致了异常,因为存在从 TimeWindows 到 Entry 的外键。然后我想我应该这样做:
foreach (var tw in target.TimeWindows)
context.DeleteObject(tw);

但这也会引发异常,因为集合在 foreach 中被修改了。陈述。所以我想到了这个:
while (target.TimeWindows.Count > 0)
context.DeleteObject(target.TimeWindows.Last());

但是现在我有点担心使用 Count属性,因为它可能会导致 SQL SELECT COUNT要执行的语句。是吗?如果是,如何删除 Entity Framework 中的所有时间窗口?

最佳答案

仅当启用延迟加载且尚未加载该属性时,对导航属性调用计数才会导致选择。所以第一次调用可能会导致类似的事情:

SELECT * FROM TimeWindows WHERE TargetId = @targetId

并且所有计数评估都将仅对加载的数据执行。

您还可以使用它来避免第二个异常:
foreach (var tw in target.TimeWindows.ToList())
context.DeleteObject(tw);

或者您可以更改您的数据库和模型以支持 identifying relation (FK to parent 将成为 TimeWindow PK 的一部分),在这种情况下,您的第一个代码片段将起作用。

关于entity-framework - 删除 Entity Framework 中的所有相关实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9922820/

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