2017-09-07 15 views
0

データベース内の複数のアイテムを更新する必要があります。efコア複数のアイテムを更新して保存する

私の質問:

  • は私がctx.Items.Update(アイテム)を使用する必要があります。 ?
  • ループ内のすべてのアイテムを最初に更新してから、ctx.SaveChangesAsync()を使用できますか?

基本的には、私はアイテムのプロパティを更新し、それらのすべてに対してSaveChangesAsync()を呼び出すと仮定しているので、各アイテムのループ内で行うのではなく、 ?

ctx.Items.Update(アイテム)はどうですか?それはそれを持って何か意味がありますか?私はこれが必要なんじゃないかと思うのですが、何を更新すればいいのでしょうか?

using (var ctx = new MyCOntext()) 
{ 
    var allToBeUpdated = await ctx.Items.Where(t=>t.ToBeUpdated == true).ToListAsync(); 

     foreach (var item in allToBeUpdated) 
     { 
      item.ToBeUpdated = false; 

      ctx.Items.Update(item); // do I need this ? 
     } 

     await ctx.SaveChangesAsync(); // can I have the save changes async out of foreach? So I can update all the items at once rather than one by one 
} 

答えて

2

は、以下の値を保存するのに十分であるべきで

using (var ctx = new MyCOntext()) 
{ 
    var allToBeUpdated = await ctx.Items.Where(t=>t.ToBeUpdated == true).ToListAsync(); 

     foreach (var item in allToBeUpdated) 
     { 
      item.ToBeUpdated = false; //change tracking will take care of tracking what is changed 
     } 

     await ctx.SaveChangesAsync(); // Save changes outside will update all the pending changes 
} 
関連する問題