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
Ottimizzare la content-visibility in CSS specificando lo spazio da occupato dall'area non renderizzata
Utilizzare ExecuteUpdate per aggiornare colonne JSON in Entity Framework
Evidenziare una porzione di testo in un pagina dopo una navigazione
Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
Eseguire i pre-commit hook di git con dependabot
Raggruppamento degli aggiornamenti di dipendenze tra directory in un monorepo con Dependabot
Utilizzare Locust con Azure Load Testing
Raggruppare risorse in .NET Aspire
Integrare un servizio esterno con .NET Aspire
Importare repository da Bitbucket a GitHub Enterprise Cloud
.NET Aspire per applicazioni distribuite
Response streaming con Blazor e .NET 10
I più letti di oggi
- Future Dev Day - Milano
- Global Azure 2026 - ASPItalia.com - Milano
- Gestire il ciclo di vita di AbortController in Javascript
- Meno password, meno segreti, meno rischio. Al Global Azure 2026 di ASPItalia.com, Stefano Mostarda parlerà di Azure Managed Identity e di come adottare un approccio zero credentials per far comunicare in modo sicuro i servizi cloud, senza gestire credenziali nel codice o nelle pipeline. È uno dei pattern raccomandati da Microsoft per ridurre il carico operativo e migliorare la sicurezza. Milano, 16 aprile 2026. #GlobalAzure #Azure #ManagedIdentity #Security #ASPItalia https://aspit.co/globalazure-26
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Blazor e InputHidden in .NET 10
- Agentic Workflows in GitHub




