Fino alla versione 2.2, Entity Framework risolve le query con Include verso una collection navigation property utilizzando un query per ogni proprietà e non creando un unico comando SQL. Questo comportamento ha il vantaggio di diminuire sensibilmente la quantità di viaggi che navigano tra l'applicazione e il database, ma al tempo stesso apre la possibilità al recupero di dati incongruenti in quanto tra una query e l'altra i dati possono essere modificati.
Per ovviare a questo problema, con Entity Framework 3 il comportamento è stato modificato per eseguire tutte le query con un solo comando SQL. Questo cambio ha però introdotto un problema in quanto le query con molte Include hanno subito un notevole rallentamento dovuto all'enorme quantità di dati ritrovati.
Entity Framework 5 introduce una nuova funzionalità che permette all'utente di decidere, a livello di query, quale tecnica utilizzare per risolvere le Include. Per default, viene utilizzata una unica query come in Entity Framework 3, ma tramite il metodo AsSplitQuery possiamo decidere unvece di usare query separate.
using (var context = new MyContext()) { var people = context.People .Include(p => p.Addresses) .AsSplitQuery() .ToList(); }
In questo esempio, viene eseguita una query per recuperare le persone e un'altra per gli indirizzi.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Gestione dell'annidamento delle regole dei layer in CSS
Introduzione alle Container Queries
Ottenere un token di accesso per una GitHub App
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Gestione CSS in Blazor con .NET 9
Creare agenti facilmente con Azure AI Agent Service
I più letti di oggi
- .NET Conference Italia 2024 - Milano
- Develop and distribute Azure Functions using K8s and CI/CD
- Disponibile la versione finale di Hyper-V: la virtualizzazione per Windows Server 2008
- Speciale Mastering Entity Framework
- Velocity arriva alla CTP3
- Silverlight Summer: un'estate speciale piena di Style per i controlli Silverlight!
- Disponibile la versione beta di Silverlight 4.0
- Mono 0.13: ora anche web services
- .NET Alerts Software Development Kit