gpt4 book ai didi

entity-framework - 如何在 Entity Framework 中删除多行(不使用 foreach)

转载 作者:行者123 更新时间:2023-12-03 04:01:19 24 4
gpt4 key购买 nike

我想使用 Entity Framework 从表中删除多个项目。没有外键/父对象,因此我无法使用 OnDeleteCascade 处理此问题。

现在我正在这样做:

var widgets = context.Widgets
.Where(w => w.WidgetId == widgetId);

foreach (Widget widget in widgets)
{
context.Widgets.DeleteObject(widget);
}
context.SaveChanges();

它可以工作,但是 foreach 让我烦恼。我正在使用 EF4,但我不想执行 SQL。我只是想确保我没有遗漏任何东西——这已经是最好的了,对吧?我可以使用扩展方法或助手来抽象代码,但我们仍然会在某个地方执行 foreach,对吗?

最佳答案

EntityFramework 6 通过 .RemoveRange() 让这一切变得更容易。

示例:

db.People.RemoveRange(db.People.Where(x => x.State == "CA"));
db.SaveChanges();

警告!不要在大型​​数据集上使用它!

EF 将所有数据拉入内存,然后将其删除。对于较小的数据集,这可能不是问题,但通常会避免这种删除方式,除非您可以保证只进行很小的更改。

您可以轻松地在内存不足的情况下运行进程,而 EF 会愉快地提取您指定的所有数据以将其删除。

关于entity-framework - 如何在 Entity Framework 中删除多行(不使用 foreach),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2519866/

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