我需要更新数据库中的多个项目。
我的问题:
基本上我需要加快速度,所以我假设如果我更新items属性然后为所有这些属性调用SaveChangesAsync()它将调用一个数据库,而不是在每个项目的循环内部进行调用?
ctx.Items.Update(item)怎么样?有没有任何意义呢?我想我需要这个,否则怎么知道要更新什么,对吧?
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
}
答案 0 :(得分:3)
以下内容应足以保存值
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
}