c# - query - linq to entities
Evite que Entity Framework agregue ORDER BY cuando use Include (1)
Aparentemente, es algo que EF hace internamente para facilitar la creación de objetos resultantes después. No se puede eliminar el order by
instrucciones.
Tenemos una consulta similar a la siguiente:
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
El problema es que al agregar .Include(x => x.Children)
, la instrucción ORDER BY
que Entity Framework agrega al SQL generado hace que la consulta tarde mucho en ejecutarse, algo como lo siguiente:
ORDER BY [Project2].[Id1] ASC, [Project2].[Id2] ASC, [Project2].[Id] ASC, [Project2].[C4] ASC
La adición de orderby a la consulta de linq tampoco ayuda, no afecta a la declaración anterior además de agregar una columna adicional para ordenar.