Il provider LINQ di Entity Framework Core non è ancora molto potente, ma migliora a ogni nuovo rilascio. Uno dei problemi più spinosi del provider è che in alcuni casi risolve le query utilizzando la tecnica 1+N che rischia di compromettere seriamente le performance della nostra applicazione e del database in generale. Prendiamo come esempio la seguente query.
var query = context.Orders.Select(
c => c.Details.Where(o => o.Amount > 50).Select(o => o.Amount));In questo caso, Entity Framework Core effettua una query per tirare fuori gli ordini che corrrispondono ai criteri di ricerca, e poi per ogni ordine, esegue una query per i dettagli. Questo significa che se la query estrae 20 ordini, effettua 21 query sul database. Per prevenire qusto problema, a partire da Entity Framework Core 2.1 possiamo ricorrere al metodo ToList nella subquery che specifica al provider che vogliamo caricare la subquery utilizzando n unico comando SQL.
var query = context.Orders.Select(
c => c.Details.Where(o => o.Amount > 50).Select(o => o.Amount).ToList());In questo modo, Entity Framework Core effettua una query per gli ordini e una per tutti i dettagli riducendo così il numero di query da 21 a 2.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Gestire progetti .NET + React in .NET Aspire
Raggruppare risorse in .NET Aspire
Il nuovo controllo Range di Blazor 9
Evitare memory leaks nelle closure JavaScript
Integrazione di Copilot in .NET Aspire
Combinare Container Queries e Media Queries
Recuperare gli audit log in Azure DevOps
Escludere alcuni file da GitHub Copilot
Definire il metodo di rilascio in .NET Aspire
Evidenziare una porzione di testo in un pagina dopo una navigazione
Configurare lo startup di applicazioni server e client con .NET Aspire
I più letti di oggi
- Personalizzare le pagine di errore su Azure App Service
- Certificati gratuiti e con rinnovo automatico con Azure App Service
- Utilizzare Locust con Azure Load Testing
- Utilizzare WebJobs su Linux con Azure App Service
- The Agentic Day - Milano
- Moonlight 2.0 in beta, con un po' di Silverlight 3.0 per Linux
- Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali


