Fra*_*ank 41 entity-framework batch-processing entity-framework-5
使用(实体框架)EF5处理批量更新的最佳方法是什么?我有两个我感兴趣的特殊情况:
更新一个字段(例如UpdateDate)以获取100到100.000 Id之间的列表(List),这是主键.分别调用每个更新似乎需要很多开销并且需要很长时间.
在单个go中插入多个,也在100到100.000之间的相同对象(例如用户).
有什么好建议吗?
Lad*_*nka 36
Ale*_*aus 21
我看到以下选项:
1.最简单的方法 - 手动创建SQL请求并通过ObjectContext.ExecuteStoreCommand执行
context.ExecuteStoreCommand("UPDATE TABLE SET FIELD1 = {0} WHERE FIELD2 = {1}", value1, value2);
Run Code Online (Sandbox Code Playgroud)
context.Tasks.Update(
t => t.StatusId == 1,
t => new Task {StatusId = 2});
Run Code Online (Sandbox Code Playgroud)
3.为EF制作自己的扩展程序.有一篇文章Bulk Delete,通过继承ObjectContext类实现了这个目标.值得一看.批量插入/更新可以以相同的方式实现.