Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架-将简单实体添加到上下文非常缓慢_C#_Entity Framework - Fatal编程技术网

C# 实体框架-将简单实体添加到上下文非常缓慢

C# 实体框架-将简单实体添加到上下文非常缓慢,c#,entity-framework,C#,Entity Framework,我需要用“假”数据填充数据库,以便对其执行一些压力测试。 因此,我编写了一些简单明了的代码来输入数据。 它运行在7个表上,为每个表创建一个对象,并使用以下方法添加: System.Data.Entity.Add(TEntity) 详情如下: context.MyObject.Add(MyObjInstance); 我每保存几百件物品 现在,这是一种放慢速度的方法,即使没有提交。(我指的是几千件物品的小时数)。 有没有更快的方法来添加(大约几千个)对象? 类似于addAll(),或者任何其他可

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

System.Data.Entity.Add(TEntity)
详情如下:

context.MyObject.Add(MyObjInstance);
我每保存几百件物品

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

谢谢。

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

如果您正在跟踪上下文中的许多实体,并调用其中一个 在一个循环中多次使用这些方法,您可能会得到显著的效果 通过关闭对更改的检测来提高性能 循环的持续时间

设置

context.Configuration.AutoDetectChangesEnabled=false

执行强化的
.Add()
操作并设置:

context.Configuration.AutoDetectChangesEnabled=true

调用
SaveChanges()
之前


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

< P>这可能是因为重复调用<代码> Debug转换()<代码>。某些EF函数会自动调用此方法。看

如果您正在跟踪上下文中的许多实体,并调用其中一个 在一个循环中多次使用这些方法,您可能会得到显著的效果 通过关闭对更改的检测来提高性能 循环的持续时间

设置

context.Configuration.AutoDetectChangesEnabled=false

执行强化的
.Add()
操作并设置:

context.Configuration.AutoDetectChangesEnabled=true

调用
SaveChanges()
之前


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

为什么不直接用数据库脚本来做?为什么不直接用数据库脚本来做呢?尝试一下。adds运行得很快,但现在SaveChanges()需要花费很多时间:-)(我感觉总共花费了相同的时间)不要调用context.Configuration.AutoDetectChangesEnabled=true,然后处理上下文。尝试了它。adds运行得很快,但现在SaveChanges()需要花费很多时间:-)(我感觉总共花费了相同的时间)不要调用context.Configuration.AutoDetectChangesEnabled=true,然后处理上下文。