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
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Eseguire script pre e post esecuzione di un workflow di GitHub
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Utilizzare QuickGrid di Blazor con Entity Framework
Referenziare un @layer più alto in CSS
Change tracking e composition in Entity Framework
Eseguire i worklow di GitHub su runner potenziati
Generare un hash con SHA-3 in .NET
Eliminare una project wiki di Azure DevOps
Utilizzare Azure Cosmos DB con i vettori
Effettuare il refresh dei dati di una QuickGrid di Blazor
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
I più letti di oggi
- Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
- Utilizzare StartsWith ed EndsWith con Span
- Utilizzare l nesting nativo dei CSS
- Microsoft lancia il nuovo tool gratuito 'ASP.NET Web Matrix Project'
- Managed deployment strategy in Azure DevOps
- Forzare l'apertura di un file fuori dal browser
- Configurare e gestire sidecar container in Azure App Service