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
Effettuare il pull di git LFS in un workflow di GitHub
Eseguire operazioni con timeout in React
Migrare una service connection a workload identity federation in Azure DevOps
Utilizzare la session affinity con Azure Container Apps
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Specificare il versioning nel path degli URL in ASP.NET Web API
Effettuare il download di un file via FTP con la libreria FluentFTP di .NET
Eseguire una query su SQL Azure tramite un workflow di GitHub
Cache policy su route groups di Minimal API in ASP.NET Core 7
Miglioramenti agli screen reader e al contrasto in Angular
Modificare i metadati nell'head dell'HTML di una Blazor Web App
C# 12: Cosa c'è di nuovo e interessante