Linq-运营订单是否相关?

Linq-运营订单是否相关?,linq,entity-framework,tsql,Linq,Entity Framework,Tsql,我有一些慢linq查询,需要对它们进行优化。我已经阅读了有关编译查询和在只读操作中的NoTracking中设置合并选项的内容。 但是我认为我的问题是我有太多的include,所以在DB中完成的连接数量是巨大的 context.ExampleEntity .Include("A") .Include("B") .Include("D.E.F") .Include("G.H") .Include("I.J") .Include(

我有一些慢linq查询,需要对它们进行优化。我已经阅读了有关编译查询和在只读操作中的NoTracking中设置合并选项的内容。 但是我认为我的问题是我有太多的include,所以在DB中完成的连接数量是巨大的

context.ExampleEntity
      .Include("A")
      .Include("B")
      .Include("D.E.F")
      .Include("G.H")
      .Include("I.J")
      .Include("K.M")
      .Include("K.N")
      .Include("O.P")
      .Include("Q.R")
      .Where(a => condition1 || complexCondition2)
我的疑问是,如果我把Where放在Includes之前,这个过滤器会在进行所有连接之前过滤ExampleEntity对象吗??我不确定linq查询是如何翻译成SQL的。 每个子查询将其结果传递给下一个查询。首先将
移动到其中
将进行过滤,然后对可能较小的集合执行包含

这在您的特定查询上下文中是否有意义取决于您的决定。

“是”。 每个子查询将其结果传递给下一个查询。首先将
移动到其中
将进行过滤,然后对可能较小的集合执行包含


这在特定查询的上下文中是否有意义取决于您的决定。

不是您问题的答案,而是一种有趣的
包含方法:
:您可以使用SQL Profiler或EF Profiler()查看针对数据库执行的确切查询。而不是您问题的答案,但是一种有趣的方法是
包含
:您可以使用sqlprofiler或efprofiler()查看对数据库执行的确切查询。