插入许多父母和孩子记录的最快方式

我发现这篇文章对批量插入在实体框架中插入最快的方式很有帮助,但是,我想知道是否有一种更有效的方法来插入带有子实体的记录。

我的实体是这样的:

在这里输入图像描述

我一直在使用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?