web-dev-qa-db-ja.com

IDのリストからEntity Frameworkの複数の行を更新する

IDのリストを取得し、それらに関連付けられたフィールドを更新できるようにするエンティティフレームワークのクエリを作成しようとしています。

SQLの例:

UPDATE Friends
SET msgSentBy = '1234'
WHERE id IN (1, 2, 3, 4)

上記をエンティティフレームワークに変換するにはどうすればよいですか?

69
allencoded

以下のようなもの

var idList=new int[]{1, 2, 3, 4};
using (var db=new SomeDatabaseContext())
{
    var friends= db.Friends.Where(f=>idList.Contains(f.ID)).ToList();
    friends.ForEach(a=>a.msgSentBy='1234');
    db.SaveChanges();
}

更新:

以下のように複数のフィールドを更新できます

friends.ForEach(a =>
                      {
                         a.property1 = value1;
                         a.property2 = value2;
                      });
131
Damith

これを可能にする2つのオープンソースプロジェクトがあります: EntityFramework.Extended およびE ntity Framework Extensions

11
Peter Kerr