2

我有一些缓慢的 linq 查询,需要优化它们。我已阅读有关已编译查询并在我的只读操作中在 NoTracking 中设置合并选项的信息。但我认为我的问题是我有太多的包含,所以在数据库中完成的连接数量是巨大的。

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

4

1 回答 1

0

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

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

于 2012-08-02T16:52:41.280 回答