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
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Migrare una service connection a workload identity federation in Azure DevOps
Recuperare App Service cancellati su Azure
Utilizzare gRPC su App Service di Azure
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Sfruttare al massimo i topic space di Event Grid MQTT
Creare una libreria CSS universale: i bottoni
Triggerare una pipeline su un altro repository di Azure DevOps
Path addizionali per gli asset in ASP.NET Core MVC
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Gestire gli accessi con Token su Azure Container Registry