Aggiungere l'include di EntityFramework ai repository ModelVirtualCasting

di Stefano Mostarda, in Eventi,

La classe ObjectQuery espone il metodo Include per caricare in Eager Loading una o più entity collegate. Visto che un repository esiste per mascherare il lavoro interno, dovevamo trovare un modo di esporre questo metodo senza esporre la classe ObjectQuery. Il lavoro è banale in quanto abbiamo aggiunto un metodo Include alle interfacce e poi nell'implementazione di questo metodo abbiamo chiamato l'Include di EF e restituito l'istanza del repository così da poter fare chaining i metodi.

La banalità di questo metodo nasconde una piccola insidia che bisogna tener a mente. Il metodo Include salva internamente la stringa di include ma poi non ritorna this, bensì cea una nuova istanza di ObjectQuery passandogli lo stato interno (quindi la stringa di include e altro ancora). Questo significa che se scriviamo qualcosa del tipo

oq.Include("stringa");

Il risultato è che abbiamo perso la nuova istanza di ObjectQuery e quindi al momento della query non avremo le stringhe di Include che vorremmo. La soluzione è comunque altrettanto banale.

oq = oq.Include("stringa");

Stay Tuned...

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese