Domanda

Vorrei creare un approccio più strutturato per caricare l'entità-albero necessaria:

Ho bisogno di una gran quantità di dati, in modo che sto facendo questo utilizzando type-safe Include (solo una normale includono, ma con il Lambda di) come mostrato qui .

Come ho detto, ho bisogno di un sacco di dati, in pratica un albero intera entità di cui al punto 1 genitore.

Ora, potrei fare questo fare qualcosa di simile:

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

Come si può vedere, questa linea piena di include può diventare piuttosto grande. Questo è in realtà un campione molto semplificata del codice vero e proprio (che non include case BTW)

Quindi quello che vorrei fare è la creazione di metodi, responsabile per la sua filiale nella struttura. In cui il metodo può accettare la query oggetto e includere il bambino, ed a sua volta, chiamare i "metodi bambino-Loader". Inoltre, il genitore non dovrebbe importare, fintanto che ha una proprietà con il tipo di bambino.

Questo probabilmente non ha molto senso in questo modo:

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


}

E così via. Ma non posso davvero ottenere la mia testa intorno ad esso ... C'è un anello mancante tra la query in entrata e chiamando i metodi bambino.

qualcuno ha fatto qualcosa di simile? Oppure qualcuno potrebbe darmi alcune indicazioni?

È stato utile?

Soluzione

Prova qualcosa come questo, invece:

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

Dove LOADX restituisce il risultato della chiamata Includi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top