1

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

System.Data.Entity.Add(TEntity)

如下:

context.MyObject.Add(MyObjInstance);

我每隔几百个对象就保存一次。

现在,即使没有提交,这也会变慢。(我的意思是几千个物体的小时数)。
有没有更快的方法来添加(大约几千个)对象?
之类的东西addAll(),或者其他可以加快该Add方法的东西?
谢谢。

4

1 回答 1

4

可能是因为反复调用DetectChanges(). 某些 EF 函数会自动调用此方法。见这里

如果您在上下文中跟踪大量实体,并且在循环中多次调用这些方法之一,那么您可以通过在循环期间关闭更改检测来获得显着的性能改进

context.Configuration.AutoDetectChangesEnabled = false;

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

context.Configuration.AutoDetectChangesEnabled = true;

打电话之前SaveChanges()

还可以考虑为部分批量操作使用新的上下文,因为上下文跟踪的实体越多,它的性能就越差。

于 2013-06-06T05:53:01.173 回答