Sé que cambiar la forma de una consulta hace que Entity Framework ignore las llamadas de inclusión, pero ¿hay alguna forma de que pueda cargar las sub propiedades cuando selecciono un número y un grupo de. En el siguiente ejemplo, deseo notificar a todos los empleados que tienen un trabajo reservado en un período de tiempo determinado. Llamar a .ToArray() después de donde solo golpea la base de datos una vez, pero estoy haciendo SelectMany y GroupBy en la memoria. ¿Hay alguna manera de que pueda obtener SelectMany y GroupBy en el servidor SQL y aún así incluir el ServiceType y Ship and the Employee?Obtención de Entity Framework para una carga ansiosa en Group Por
Estoy buscando una forma de hacer una llamada SQL a la base de datos y terminar con una lista de los empleados que tienen un trabajo en el período de tiempo y los trabajos a los que están asignados.
var employeeJobs = DataContext.Jobs.
Include("ServiceType").
Include("Ship").
Include("JobEmployees.Employee").
Where(j => j.Start >= now && j.Start <= finish).
OrderBy(j => j.Start).
ToArray().
SelectMany(j => j.JobEmployees, (j, je) => new {
Job = j,
Employee = je.Employee
}).GroupBy(j => j.Employee);
_I estoy haciendo la SelectMany y GroupBy en memory_. ¿Cómo lo sabes? La forma de la consulta en EF puede ser esquiva. –
Si quiere terminar con una lista de empleados y sus trabajos, le sugiero que haga la consulta al revés: employeeJobs = de DataContext.Employees e donde e.Any (... tiene criterios de trabajo ...) seleccione e. No soy capaz de escribir la consulta LINQ sin ayuda de intellisense, pero ¿entiendes? – GTG
@GertArnold La llamada a 'ToArray' materializa los resultados,' SelectMany' y 'GroupBy' vienen * después de * la llamada a' ToArray'. – casperOne