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
Integrare modelli AI in un workflow di GitHub
Ridurre il reflow cambiando il CSS
Implementare il throttle in JavaScript
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Controllare la telemetria con .NET Aspire
Ridurre il reflow ottimizzando il CSS
Esporre un server MCP esistente con Azure API Management
Disabilitare le run concorrenti di una pipeline di Azure DevOps
.NET Aspire per applicazioni distribuite
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Controllare la velocità di spostamento su una pagina HTML
Integrare OpenAI tramite Aspire
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Le DirectInk API nella Universal Windows Platform
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Gli oggetti CallOut di Expression Blend 4.0
- Sfruttare una CDN con i bundle di ASP.NET


