IDのリストを取得し、IDに関連付けられたフィールドを更新できるようにするエンティティフレームワークのクエリを作成しようとしています。
SQLの例:
UPDATE Friends
SET msgSentBy = '1234'
WHERE id IN (1, 2, 3, 4)
上記をエンティティフレームワークに変換するにはどうすればよいですか?
IDのリストを取得し、IDに関連付けられたフィールドを更新できるようにするエンティティフレームワークのクエリを作成しようとしています。
SQLの例:
UPDATE Friends
SET msgSentBy = '1234'
WHERE id IN (1, 2, 3, 4)
上記をエンティティフレームワークに変換するにはどうすればよいですか?
回答:
以下のようなもの
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;
});
ForEach
List
はのメソッドであり、あまり機能的なプログラミング方法ではないため、通常は使用しないことをお勧めします。foreach
(オペレーター)を普通の人と同じように使うだけです。
UPDATE SomeTable SET SomeField = SomeValue WHERE Id IN (...)
)