5

本文提供了一些证据,证明在您的 Entity Framework 数据上下文中关闭 AutoDetectChanges 可以在插入大量实体时提供显着的性能改进。

context.Configuration.AutoDetectChangesEnabled = false;

但是,SqlEntityConnection 类型提供程序提供的 DataContext似乎没有提供任何控制此设置的方法。

没有context.Configuration财产,也没有context.DataContext.Configuration财产。有一个context.DataContext.ContextOptions,但它甚至没有任何相似之处AutoDetectChangesEnabled

类型提供者上下文的DataContext属性是 type System.Data.Objects.ObjectContext。有谁知道从那里影响这个特定环境的方法?

4

1 回答 1

5

去年我写了一篇关于检测变化性能的非常相似的文章,你可以在这里找到:http: //blog.staticvoid.co.nz/2012/5/7/entityframework_performance_and_autodetectchanges我的经验主要是 DbContext(它包装了 ObjectContext),但我做了一些搜索,发现以下内容

与 ObjectContext 相比,为什么在 EF 4.1 中插入实体如此缓慢?

这说明 ObjectContext 实际上并没有进行自动更改检测,所以这不是您应该担心的事情。但是,您仍然需要注意,大型对象图会减慢速度,因为所有快照跟踪方案都需要在某些时候检测到更改,这涉及对象图的完整枚举

于 2013-01-02T23:33:15.800 回答