插入许多父母和孩子记录的最快方式
我发现这篇文章对批量插入在实体框架中插入最快的方式很有帮助,但是,我想知道是否有一种更有效的方法来插入带有子实体的记录。
我的实体是这样的:
我一直在使用BulkInsert进行试验,似乎可以提高性能,但对于每个有多个子实体的约40条记录,它仍然约为60秒。 我有些情况下需要插入数千条记录,并且速度非常慢。 我的代码如下:
using (var transactionScope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 15, 0)))
{
using (var db = new MyDBContext())
{
db.Configuration.AutoDetectChangesEnabled = false;
var entities = db.ScenarioCategory.AddRange(categories);
db.BulkInsert(entities);
db.SaveChanges();
}
transactionScope.Complete();
}
免责声明:我是项目实体框架扩展的所有者
这是插入,更新,删除和合并的最快方式。 您甚至可以使它更容易,并通过SaveChanges使用BulkSaveChanges。
// Using BulkSaveChanges
using (var db = new MyDBContext())
{
db.ScenarioCategory.AddRange(categories);
db.BulkSaveChanges();
}
// Using BulkInsert on parent then child
using (var db = new MyDBContext())
{
db.BulkInsert(categories);
db.BulkInsert(categories.SelectMany(x => x.Items);
}
链接地址: http://www.djcxy.com/p/33559.html
上一篇: Fastest way of inserting many parent and child records
下一篇: Why is inserting entities in EF 4.1 so slow compared to ObjectContext?