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
.NET Aspire vs Dapr: differenze, sovrapposizioni e integrazione
Integrare OpenTelemetry direttamente in Azure Monitor
Impostare il tipo di supporto dei campi Json in Entity Framework con Sql Server
Stop Building Chatbots. Build a team
Blue/Green Release in locale con .NET Aspire
Validare i dati di una colonna JSON in SQL Server
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
Abilitare .NET 10 su Azure App Service e Azure Functions
Migrare applicazioni legacy nel cloud con Azure App Service Managed Instance
Cache temporanea in Javascript con oggetti
Integrazione di Copilot in .NET Aspire
How to be a DevOps engineer in the AI era


