使用 LINQ 批量更新
Bulk update using LINQ
下面每次调用DB,通过id获取用户列表
foreach (User user in users)
{
db.Users.Where(w => users.Any(a => a.Id == w.Id)).ToList().
ForEach(x => {
x.name = user.name;
x.cat = user.cat;
});
}
db.SaveChanges();
有没有办法不用每次都进入循环来做到这一点。
先获取用户列表,更新它们,然后保存更改。你仍然需要一个 foreach 来更新它。这需要列表并仅选择 ID,将其转换为列表(或任何您的 ID 字段),然后从数据库中获取该列表中的所有用户,更新它们并保存。
var dbUserList = db.Users.Where(x => users.Select(y => y.Id).Contains(x.Id));
foreach (var user in users)
{
var dbUser = dbUserList.First(x => x.Id == user.Id);
dbUser.name = user.name;
dbUser.cat = user.cat;
}
db.SaveChanges();
下面每次调用DB,通过id获取用户列表
foreach (User user in users)
{
db.Users.Where(w => users.Any(a => a.Id == w.Id)).ToList().
ForEach(x => {
x.name = user.name;
x.cat = user.cat;
});
}
db.SaveChanges();
有没有办法不用每次都进入循环来做到这一点。
先获取用户列表,更新它们,然后保存更改。你仍然需要一个 foreach 来更新它。这需要列表并仅选择 ID,将其转换为列表(或任何您的 ID 字段),然后从数据库中获取该列表中的所有用户,更新它们并保存。
var dbUserList = db.Users.Where(x => users.Select(y => y.Id).Contains(x.Id));
foreach (var user in users)
{
var dbUser = dbUserList.First(x => x.Id == user.Id);
dbUser.name = user.name;
dbUser.cat = user.cat;
}
db.SaveChanges();