我发现这篇文章对批量插入有帮助Fastest Way of Inserting in Entity Framework,但是,我想知道是否有更有效的方式插入带有子实体的记录。插入许多父母和孩子记录的最快方法
我的实体是这样的:
我一直在尝试与BulkInsert,它似乎提高性能一点,但它仍然是大约60秒,约40条记录每一个具有多个子实体。我有些情况下需要插入数千条记录,并且速度非常慢。我的代码如下:
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();
}
你为什么要调用'AddRange'和'BulkInsert'?您应该选择其中一个,因为它们都执行相同的操作。 – shlatchz
@SteveGreene从BulkInsert:“要将批量插入与DbContext结合,必须使用TransactionScope。” – tqrecords