将查询编译与EntityFramework中的执行分开

时间:2013-02-02 13:58:10

标签: performance entity-framework ef-code-first

我们遇到的性能问题缩小到我们的app-server。一种可能的怀疑是,在某些情况下,编译Linq2Entity查询的时间变得过长。 我们正在扩展我们的日志系统以包含已执行的sql。 我计划使用.ToString()的{​​{1}}方法来获取sql。

  1. 这会强制EF编译查询吗?
  2. 当我们枚举IQueriable并避免重新编译查询时,EF是否会使用此计划?
  3. 这有什么缺点吗?

1 个答案:

答案 0 :(得分:1)

  1. 是 - EF将通过查询管道运行您的查询(包括生成实际SQL查询的提供程序),
  2. 这取决于 - 如果您在.NET Framework 4.5上使用EF,则会自动编译和缓存查询(有关详细信息,请参阅performance considerations)。
  3. 可能不会编译和缓存查询。