我的代码-
public void SaveTagOrder(List<KeyValuePair<int, int>> result) {
foreach(var item in result){
var entity = _vpsdbContext.Tags.FirstOrDefault(e => e.TagId == item.Key);
if (entity != null) { entity.SortOrder = item.Value; }
}
_vpsdbContext.SaveChanges();
}
我只想一次更新多个记录。据我所知,我编写了这段代码,但它是一个接一个地添加的。请告诉我一次其他更新多个记录的方法。
答案 0 :(得分:0)
从技术上讲没有问题。 EntityFramework Update的工作原理是这样的。
您可以进行一些更改以加快流程
选项1
将 AutoDetectChangesEnabled 设置为 False Please check this answer
db.Tags
.Where(x=>result.Contains(x.tagId))
.ToList()
.ForEach(a=>a.SortOrder = value);
db.SaveChanges();
选项2
您可以尝试 EntityFramework 插件进行批量操作,here
以下是本文稍后的“性能”部分的一小部分摘录。
Batch iteration with 25000 entities
Insert entities: 880ms
Update all entities with a: 189ms
Bulk update all with a random read: 153ms
delete all entities with a: 17ms
delete all entities: 282ms
Standard iteration with 25000 entities
Insert entities: 8599ms
Update all entities with a: 360ms
Update all with a random read: 5779ms
delete all entities with a: 254ms
delete all entities: 5634ms