Frage

Ich möchte einen strukturierteren Ansatz zum Laden der benötigten Einheit Baum erstellen:

Ich brauche eine schwere Menge an Daten, so dass ich mache das typsichere Beinhaltet die Verwendung von (nur ein normalen Include aber mit Lambda) wie hier gezeigt.

Wie gesagt, ich brauche eine Menge Daten, im Grunde eine ganze Entitätsbaum unter 1 übergeordnetem Elemente.

Nun, ich könnte dies etwas zu tun, tun:

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

Wie Sie sehen können, diese Zeile gefüllt mit umfasst, kann ziemlich umfangreich erhalten. Dies ist in der Tat eine sehr vereinfachte Probe des eigentlichen Code (was nicht enthalten Häuser btw)

Was würde Ich mag Methoden tun, ist die Schaffung, verantwortlich für seine Niederlassung in dem Baum. Wenn das Verfahren der Objektabfrage akzeptieren kann und umfasst das Kind, und der wiederum nennen sie die „Kinder loader Methoden“. Auch sollten die Eltern keine Rolle, solange es eine Eigenschaft mit dem Typ des Kindes hat.

Dies ist wahrscheinlich machen nicht viel Sinn so:

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(...)


}

Und so weiter. Aber ich kann nicht wirklich meinen Kopf um ihn herum ... Es gibt eine fehlende Verbindung zwischen der eingehenden Abfrage und rief die untergeordneten Methoden.

Hat jemand so etwas getan? Oder könnte jemand mir einige Hinweise?

War es hilfreich?

Lösung

Versuchen Sie so etwas wie diese stattdessen:

query = LoadDoors (Abfrage, x => x.Door);

Wo LOADX das Ergebnis zurück zu rufen einschließen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top