Nello script #420 abbiamo visto come utilizzare il metodo Include per precaricare un grafo di oggetti collegati in una singola query con Entity Framework Core. Questa tecnica è efficace ma il caricamente del grafo viene invalidato nel momento in cui terminiamo la query con un comando Select il cui risultato è diverso dalla classe da cui siamo partiti per eseguire la query. Prendiamo come esempio le seguenti query.
var orders1 = ctx.Order.Include(o => o.Customer).ToList(); var orders2 = ctx.Order.Include(o => o.Customer) .Select(o => new { o.id, o.OrderDate, o.Customer.Id });
La prima query usa Include per caricare in una sola query l'oridne e il cliente. La seconda query ignora Include in quanto il tipo restituito è un tipo anonimo. In questi casi il compilatore solleva un warning, ma possiamo anche fare in modo che venga sollevata un'eccezione usando il metodo ConfigureWarnings in fase di configurazione del DbContext.
protected override void OnConfiguring (DbContextOptionsBuilder optionsBuilder) { optionsBuilder .ConfigureWarnings(warnings => warnings.Throw(CoreEventId.IncludeIgnoredWarning)); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Criptare la comunicazione con mTLS in Azure Container Apps
Determinare lo stato di un pod in Kubernetes
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Utilizzare Tailwind CSS all'interno di React: installazione
Usare un KeyedService di default in ASP.NET Core 8
Configurare policy CORS in Azure Container Apps
Sfruttare lo streaming di una chiamata Http da Blazor
Le novità di Angular: i miglioramenti alla CLI
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Elencare le container images installate in un cluster di Kubernetes
Hosting di componenti WebAssembly in un'applicazione Blazor static
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL