c# - Entity Framework - 将简单的实体添加到上下文中非常慢

标签 c# entity-framework

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

System.Data.Entity.Add(TEntity)

如下:

context.MyObject.Add(MyObjInstance);

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

现在这是减慢速度的方式,即使没有提交。 (我指的是几千个对象的小时数)。
有没有更快的方法来添加(大约几千个)对象?
addAll() 之类的东西,或者任何其他可以加速 Add 方法的东西?
谢谢。

最佳答案

可能是因为重复调用了DetectChanges()。某些 EF 函数会自动调用此方法。参见 here .

If you are tracking a lot of entities in your context and you call one of these methods many times in a loop, then you may get significant performance improvements by turning off detection of changes for the duration of the loop

设置

context.Configuration.AutoDetectChangesEnabled = false;

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

context.Configuration.AutoDetectChangesEnabled = true;

在调用 SaveChanges() 之前。

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

关于c# - Entity Framework - 将简单的实体添加到上下文中非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16954498/

相关文章:

c# - 数据注释 - 根据代码中的条件删除实体验证

c# - 如何搭建 PostgreSQL + Entity Framework ?

entity-framework - EF 代码优先 : Rails-style created and modified columns

c# - 同步调用第三方异步任务方法

c# - 缓存已编译的 lambda 表达式

c# - 字符串中的转义序列

c# - 如何仅使用单向导航对 Entity Framework 实体/映射进行建模

entity-framework - 在 LINQ to SQL 查询中使用了 'new' 运算符,但在每个结果中都引用了相同的实例

c# - C# 的省略号(以一个完整的词结尾)

c# - UWP : How to set the main icon