我有一个实体列表,我想将它们插入到数据库中.如果实体已经存在于数据库中,则需要跳过该实体.如果它在数据库中但具有不同的值,那么它需要更新.
除了每个项目进行数据库调用之外,还有什么方法可以做到这一点吗?
我的计划是尝试插入,如果抛出键上的唯一约束异常,则执行更新.
phi*_*ady 11
EF不适合BULK刀片.对于1000个记录来说还可以,但是大数(100k以上)它的速度很慢.
如果您打算使用EF.
例如
Context.Set<TPoco>().AddOrUpdate(poco);
//...
Context.Configuration.AutoDetectChangesEnabled =
//..
Context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
如果复制不相关的数据,您可以并行尝试这些表(doh)
我为https://efbulkinsert.codeplex.com/做了扩展
它使用起来非常简单
using(var context = new MyDbContext())
{
context.BulkInsert(hugeCollectionOfEntities);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51400 次 |
| 最近记录: |