Quando usiamo la classe ObjectContext e i tipi a essa associati, per caricare un grafo di oggetti in un'unica query dobbiamo utilizzare il metodo Include della classe ObjectSet<T>. Questo metodo accetta in input una stringa che specifica le proprietà che puntano agli altri oggetti che vogliamo caricare. Sebbene questo metodo sia molto comodo, il fatto di specificare le proprietà da caricare come stringhe può portare ad errori che possono essere scovati solo in fase di esecuzione.
Quando usiamo la classe DbContext e i tipi a essa associati, possiamo utilizzare l'extension method Include che estende la classe DbQuery (che è la classe base del tipo DbSet<T>) per scrivere include tipizzate tramite lambda expression così come nel seguente codice.
var result = ctx.Orders.Include(o => o.Details).ToList();
L'extension method Include è situato in una classe del namespace System.Data.Entity quindi questo namespace va incluso nella classe tramite la direttiva using/imports.
In questo modo ogni errore di digitazione viene controllato in fase di compilazione evitando così di avere errori a runtime.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Come migrare da una form non tipizzata a una form tipizzata in Angular
Utilizzare i primary constructor di C# per inizializzare le proprietà
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Eseguire query verso tipi non mappati in Entity Framework Core
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Eseguire attività pianificate con Azure Container Jobs
Usare un KeyedService di default in ASP.NET Core 8
Definire stili a livello di libreria in Angular
Generare token per autenicarsi sulle API di GitHub
Cambiare la chiave di partizionamento di Azure Cosmos DB
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Utilizzare un service principal per accedere a Azure Container Registry