0

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

然而,问题出在生产服务器上。如果我在那里手动运行查询,我会看到大约 500 毫秒的时间使用来获取数据,但实体框架现在使用大约 11000 毫秒来获取数据和构建对象,这当然无论如何都不好。

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

4

1 回答 1

0

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

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

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

于 2013-04-24T06:27:21.137 回答