实体框架与许多包括的性能差异

时间:2013-04-19 07:03:18

标签: sql-server entity-framework-5

在我的应用程序中,我有一个使用25个包含的大讨厌查询。我知道这可能有点过分,但它没有给我们带来太多问题,并且一直很好。如果我接受EF生成的查询并在数据库中手动运行它需要大约500ms,并且从代码EF使用大约700ms来从数据库获取数据并构建对象结构,这是完全可以接受的。

但问题出在生产服务器上。如果我手动运行查询,我会看到大约500ms的时间用于获取数据,但实体框架现在使用大约11000ms来获取数据并构建对象,这当然不是任何措施都不好。

所以我的问题是:当在数据库上手动触发的查询大致相同时,这些极端差异的原因是什么?

1 个答案:

答案 0 :(得分:0)

我最终以更“手动”的方式使用实体框架。

因此,我不得不手动使用一系列dbContext.Set<T>而不是dbContext.Database.SqlQuery<T>("select something from something else")和许多包含。经过一些痛苦的编码将所有对象绑定在一起后,我在有问题的机器上对它进行了测试,现在它在所有机器上按预期工作。

所以我不知道为什么它在某些机器上运行而在其他机器上运行,但是当有大量包含时,EF似乎在某些机器设置上存在问题。