实体框架——向上下文添加简单的实体是非常缓慢的
本文关键字:实体 缓慢 非常 添加 框架 上下文 简单 | 更新日期: 2023-09-27 18:17:04
我需要用"假"数据填充我的数据库,以便在它上执行一些压力测试。
因此,我编写了一些简单直接的代码来输入数据。
它运行7个表,为每个表创建一个对象,并使用:
System.Data.Entity.Add(TEntity)
如下:
context.MyObject.Add(MyObjInstance);
我每保存几百个对象。
现在这是一种方法,即使没有提交也可以减慢速度。(我指的是几千个物体的时间)。
有没有更快的方法来添加(大约几千个)对象?比如addAll()
,或者其他可以加速Add
方法的东西?
谢谢。
可能是多次呼叫DetectChanges()
所致。一些EF函数会自动调用这个方法。看到这里。
组如果你在你的上下文中跟踪很多实体,你调用一个在一个循环中多次使用这些方法,那么您可能会得到重要的结果的更改检测,从而提高性能循环持续时间
context.Configuration.AutoDetectChangesEnabled = false;
做密集的.Add()
操作并设置:
context.Configuration.AutoDetectChangesEnabled = true;
在调用SaveChanges()
之前。
还可以考虑为部分批量操作使用一个新的上下文,因为一个上下文跟踪的实体越多,它的性能就越差。