如何解决使用LINQ批量更新
以下内容全部保存一次,如何制作50个批次并保存一个批次,而不是全部保存一次。
dbUserList大约有5万个对象。
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();
解决方法
foreach (var user in users)
{
db.Users.Attach(user);
db.Entry(user).State = System.Data.Entity.EntityState.Unchanged;
db.Entry(user).Property(c=> c.name).IsModified=true;
db.Entry(user).Property(c=> c.cat).IsModified=true;
}
db.SaveChanges();
我认为这就是您想要的。全部更新而不查询全部。
,您需要在LINQ中使用跳过/获取来解决此问题。下面的代码应该工作。尽管我并不总是喜欢使用break语句来做一会儿(true),但这是实现此目的的最简单方法。
./manage.py migrate
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。