1

我有以下代码:

List<Item> csItems = (from i in context.Items
                      where i.CSItem == true
                      select i).ToList<Item>();
csItems.ForEach(i => i.Active = false);
context.SaveChanges();

似乎这非常低效,因为我必须先阅读整个表格,然后更新表格。有没有更好的方法来做到这一点,以便我只进行更新而不阅读所有内容?

4

2 回答 2

2

Linq2EF 没有内置的批量更新,但是你可以使用Alex James文章自己做,实际上你应该自己实现它。同样简单的方法是使用存储过程。但是如果你想自己拥有它,你可以阅读所有 4 篇文章系列,它们很容易阅读。

于 2012-05-22T19:11:44.890 回答
1

无需构建List<T>项目。我个人只会列举结果并设置值:

IQueryable<Item> csItems = (from i in context.Items
                  where i.CSItem == true
                  select i);
foreach(var item in csItems)
     item.Active = false;

context.SaveChanges();

请注意,Entity Framework 没有内置批量更新功能,因此做一些更有效的事情需要一些其他技术

于 2012-05-22T19:11:50.313 回答