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 に答える