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
Limitare le richieste lato server con l'interactive routing di Blazor 8
Usare le collection expression per inizializzare una lista di oggetti in C#
Elencare le container images installate in un cluster di Kubernetes
Usare il versioning con i controller di ASP.NET Core Web API
Utilizzare il trigger SQL con le Azure Function
Controllare gli accessi IP alle app con Azure Container Apps
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Creare un'applicazione React e configurare Tailwind CSS
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Creare moduli CSS in React
Sostituire la GitHub Action di login su private registry
I più letti di oggi
- Registrare in una matrice il contenuto di una tabella di un database
- Monad diventa Windows PowerShell e va in RC1
- Nasce il DLR: il .NET Framework 3.5 supporta i linguaggi dinamici
- Using Components in Blazor
- Un Rating Custom Control con DropDownList e jQuery
- Performance in .NET 6 https://aspit.co/b9g di @laxxifer