Entity framework 插入多个父记录和子记录的最快方法

Entity framework 插入多个父记录和子记录的最快方法,entity-framework,azure-sql-database,bulkinsert,Entity Framework,Azure Sql Database,Bulkinsert,我发现本文有助于批量插入,但是,我想知道是否有更有效的方法插入带有子实体的记录 我的实体是这样的: 我一直在尝试,它似乎提高了一点性能,但是对于每个有多个子实体的大约40条记录,仍然需要60秒。我有需要插入数千条记录的情况,而且速度可能非常慢。我的代码如下: using (var transactionScope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 15, 0))) { usin

我发现本文有助于批量插入,但是,我想知道是否有更有效的方法插入带有子实体的记录

我的实体是这样的:

我一直在尝试,它似乎提高了一点性能,但是对于每个有多个子实体的大约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();
}

免责声明:我是项目的所有者

下面是插入、更新、删除和合并的最快方法。您甚至可以更轻松地使用BulkSaveChanges而不是SaveChanges

// 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);
}

免责声明:我是项目的所有者

下面是插入、更新、删除和合并的最快方法。您甚至可以更轻松地使用BulkSaveChanges而不是SaveChanges

// 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);
}

为什么要同时调用
AddRange
BulkInsert
?您应该选择其中一个,因为它们都执行相同的操作。@SteveGreene From BulkInsert:“要将bulk insert与DbContext相结合,必须使用TransactionScope。”为什么要同时调用
AddRange
BulkInsert
?您应该选择其中一个,因为它们都执行相同的操作。@SteveGreene From BulkInsert:“要将bulk insert与DbContext结合起来,必须使用TransactionScope。”