Pregunta

Me gustaría crear un enfoque más estructurado de la carga de la entidad de árboles necesarios:

Necesito una seria cantidad de datos, por lo que estoy haciendo esto con seguridad de tipos Incluye (sólo un normal incluyen pero con Lambda) como se muestra aquí .

Como ya he dicho, necesito una gran cantidad de datos, básicamente, un árbol entidad completa bajo el punto 1 de los padres.

Ahora, que podía hacer esto haciendo algo como:

context.House
    .Include(x => x.Doors)
    .Include(x => x.Doors.FirstOrDefault().Joint)
    .Include(x => x.Doors.FirstOrDefault().Joint.FirstOrDefault().JointCategory)
    .Include(x => x.Doors.FirstOrDefault().Joint.FirstOrDefault().JointCategory.JointType)
    .Include(x => x.Windows)
    // ... same thing
    .Include(x => x.Roof)
    // ... same thing

Como se puede ver, esta línea incluye llena puede llegar a ser muy grande. Esta es, de hecho, una muestra muy simplificada del código real (que no incluye casas por cierto)

Así que lo que me gustaría hacer es crear métodos, responsables de su rama en el árbol. Cuando el método puede aceptar la consulta de objeto y de incluir al niño, y, a su vez, llamar a los métodos "niño-Loader". Además, el padre no debe importar, siempre y cuando se tiene una propiedad con el tipo de niño.

Esto probablemente no tiene mucho sentido por lo que:

public void LoadHouse(int id)
{
    // ...
    ObjectQuery<House> query = context.House;

    // and now?
    LoadDoors(query, x => x.Door);

}

public void LoadDoors<T>(ObjectQuery<T> query, ..?..)
{
    // ... ?

    LoadJoints(...)


}

Y así sucesivamente. Pero realmente no puedo conseguir mi cabeza alrededor de ella ... Hay un eslabón perdido entre la consulta entrante y llamar a los métodos del niño.

Alguien ha hecho algo como esto? O podría alguien darme algunos consejos?

¿Fue útil?

Solución

Pruebe algo como esto en su lugar:

consulta = LoadDoors (consulta, x => x.Door);

Cuando LoadX devuelve el resultado de la llamada Incluir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top