Desideroso caricamento su elementi tracciati?
Domanda
Ho un elemento associato a un'entità (contatto) che espone alcune proprietà di navigazione.
Voglio che in alcune azioni (es. un pulsante "Carica figli"), il Contatto debba caricare per tutti i suoi figli e nipoti come posso fare con un ObjectQuery. Includi prima dell'esecuzione; esempio (pseudo):
DirectCast(element.DataContext, Contact).SubContacts. _
Include("Address.State"). _
Load()
Voglio essere in grado di modellare i risultati anche ricaricando elementi come nell'esempio sopra, non solo durante l'interrogazione del modello stesso.
Penso che questo dovrebbe essere in qualche modo parte dell'Entity-Framework.
Soluzione
Non sono sicuro di seguire la domanda, ma vorrei controllare:
Vuoi prendere un'entità che hai già caricato, quindi caricare una proprietà di navigazione con includi i percorsi per quella proprietà. In realtà non è così difficile, purché si utilizzi lo stesso contesto utilizzato per caricare il primo oggetto.
Il punto importante è che ogni volta che esegui una query che restituisce un'entità, Entity Framework la collegherà automaticamente con uno dei suoi oggetti correlati che già possiedi. Quindi quello che vuoi davvero è produrre una nuova query che restituisca i dati extra, con alcune inclusioni.
Ogni riferimento in Entity Framework ha un metodo chiamato CreateSourceQuery . Restituisce una query oggetto, quindi puoi usarla per farlo (scusa, C #):
AlreadyLoadedContact.SubContacts.CreateSourceQuery().Include("Address.State").ToList();
La chiamata ToList esegue la query e Entity Framework prenderà tutti i risultati e li aggiungerà automaticamente a SubContacts EntityCollection.