[c#] ID 목록에서 Entity Framework의 여러 행 업데이트

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;
                      });


답변

var idList=new int[]{1, 2, 3, 4};
var friendsToUpdate = await Context.Friends.Where(f =>
    idList.Contains(f.Id).ToListAsync();

foreach(var item in previousEReceipts)
{
  item.msgSentBy = "1234";
}

foreach를 사용하여 조건을 충족하는 각 요소를 업데이트 할 수 있습니다.

다음은보다 일반적인 방법의 예입니다.

var itemsToUpdate = await Context.friends.Where(f => f.Id == <someCondition>).ToListAsync();

foreach(var item in itemsToUpdate)
{
   item.property = updatedValue;
}
Context.SaveChanges()

일반적으로 await for db 쿼리와 함께 비동기 메서드를 가장 많이 사용합니다.


답변