实体框架 - 向上下文添加简单实体非常慢

时间:2013-06-06 05:46:01

标签: c# entity-framework

我需要用“假”数据填充我的数据库,以便对其进行一些压力测试 因此,我编写了一些简单直接的代码来输入数据 它运行7个表,为每个表创建一个对象,并使用以下命令添加它:

System.Data.Entity.Add(TEntity)

如下:

context.MyObject.Add(MyObjInstance);

我保存了几百件物品。

现在这种方法很慢,即使没有提交。 (我的意思是几千个物体的小时数) 是否有更快的方法来添加(大约几千个)对象?
addAll()这样的东西,还是其他能加速Add方法的东西呢? 感谢。

1 个答案:

答案 0 :(得分:4)

可能是因为多次调用DetectChanges()。某些EF函数会自动调用此方法。请参阅here

  

如果您在上下文中跟踪了很多实体,那么您可以调用一个实体   这些方法在循环中多次,那么你可能会变得很重要   通过关闭检测变化来改善性能   循环的持续时间

context.Configuration.AutoDetectChangesEnabled = false;

执行密集的.Add()操作并设置:

context.Configuration.AutoDetectChangesEnabled = true;

在致电SaveChanges()之前。

同时考虑为部分批量操作使用新的上下文,因为上下文跟踪的实体越多,它执行的越差。