Quando eseguiamo una query, Entity Framework tiene traccia degli oggeti recuperati così da poter persistere eventuali modifiche e da poter mantenere una sola istanza in memoria per ogni oggetto letto. Queste funzionalità hanno un costo in termini di performance, quindi, quando abbiamo query in sola lettura, possiamo disabilitarle.
Per disabilitare il tracking a livello di query è sufficiente invocare il metodo AsNoTracking esattamente come mostrato nel prosimo esempio.
using (var ctx = new MyContext()) { var people1 = ctx.People.AsNoTracking().Where(p => p.Name.StartsWith("S")).ToList(); var people2 = ctx.People.Where(p => p.Name.StartsWith("T")).ToList(); }
In questo caso, gli oggetti estratti dalla prima query non vengono tracciati mentre quelli della seconda query vengono tracciati. Questa funzionalità era già presente in Entity Framework 6, ma in Entity Framework Core è stata anche aggiunta la possibilità di disabilitare il tracking a livello di context impostanto la variabile ChangeTracker.QueryTrackingBehavior.
using (var ctx = new MyContext()) { ctx.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking; var people1 = ctx.People.Where(p => p.Name.StartsWith("S")).ToList(); var people2 = ctx.People.Where(p => p.Name.StartsWith("T")).ToList(); }
In questo caso anche senza il metodo AsNoTracking, gli oggetti della prima e della seconda query non vengono tracciati.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare Tailwind CSS all'interno di React: primi componenti
Gestire la cancellazione di una richiesta in streaming da Blazor
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Sfruttare al massimo i topic space di Event Grid MQTT
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Limitare le richieste lato server con l'interactive routing di Blazor 8
Utilizzare una qualunque lista per i parametri di tipo params in C#
Creare una libreria CSS universale - Rotazione degli elementi
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Generare un hash con SHA-3 in .NET
Usare il colore CSS per migliorare lo stile della pagina