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
Migliorare la sicurezza dei prompt con Azure AI Studio
Eseguire i worklow di GitHub su runner potenziati
Potenziare Azure AI Search con la ricerca vettoriale
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Gestione dei nomi con le regole @layer in CSS
Gestione degli stili CSS con le regole @layer
Gestire liste di tipi semplici con Entity Framework Core
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Triggerare una pipeline su un altro repository di Azure DevOps
Utilizzare il trigger SQL con le Azure Function
I più letti di oggi
- Modificare la luminosità dello schermo nella Universal Windows Platform
- Visual Basic 2005 Conference, 23 marzo a Milano con i PM di VB
- Utilizzare la direttiva ngStyle di Angular
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Creare velocemente microservice grazie a minimal API di ASP.NET Core 6
- Ballmer inizia la keynote parlando del momento attuale. https://aspit.co/build-13 #bldwin
- Utilizzare le Composition API nella Universal Windows Platform
- Usare SymbolIcon per inserire icone standard nelle Universal App
- Eseguire query con LINQ to SQL
- Ottimizzare la persistenza che coinvolge un solo oggetto con #entityframework Core 7 https://aspit.co/cey di @sm15455