使用Include时阻止实体框架添加ORDER BY

Jam*_*mie 23 c# sql linq entity-framework entity-framework-6

我们有类似以下的查询:

from x in db.Table.Include(x => x.Parent)
                  .Include(x => x.Parent.Relation)
                  .Include(x => x.Relation)
                  .Include(x => x.Children)
where /* some query */
select x
Run Code Online (Sandbox Code Playgroud)

问题是,在添加时.Include(x => x.Children),ORDER BY实体框架添加到生成的SQL的语句会导致查询花费很长时间来执行 - 如下所示:

ORDER BY [Project2].[Id1] ASC, [Project2].[Id2] ASC, [Project2].[Id] ASC, [Project2].[C4] ASC
Run Code Online (Sandbox Code Playgroud)

将orderby添加到linq查询也没有帮助,除了添加额外的列以进行排序之外,它不会影响上述语句.

Joa*_*nvo 5

显然,这是EF在内部做的事情,以便以后简化结果对象的创建.您无法删除该order by指令.

  • 当然,但我认为OP不愿意重新编码实体框架. (10认同)
  • 如果你愿意,你可以做任何事情,有时间和金钱. (7认同)