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
Recuperare l'ultima versione di una release di GitHub
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Creare una libreria CSS universale: Clip-path
Creare agenti facilmente con Azure AI Agent Service
Estrarre dati randomici da una lista di oggetti in C#
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Introduzione ai web component HTML
Selettore CSS :has() e i suoi casi d'uso avanzati
Potenziare la ricerca su Cosmos DB con Full Text Search
Migliorare la sicurezza dei prompt con Azure AI Studio
Creare una libreria CSS universale: Nav menu