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.

È stato utile?

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.

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