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
Configurare policy CORS in Azure Container Apps
Usare gateway dedicati con Azure Cosmos DB per migliorare le prestazioni
Eseguire attività pianificate con Azure Container Jobs
Controllare gli accessi IP alle app con Azure Container Apps
Definire lo stile CSS in base alle dimensioni del container
Elencare le container images installate in un cluster di Kubernetes
Gestire undefined e partial nelle reactive forms di Angular
Sfruttare lo streaming di una chiamata Http da Blazor
Effettuare l'upload di un file via FTP con la libreria FluentFTP di .NET
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Generare file PDF da Blazor WebAssembly con iText
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare i primary constructor in C#
- Installare le Web App site extension tramite una pipeline di Azure DevOps
- tra poco è la volta di #spa, #javascript e #angularjs per lo sviluppatore #aspnet con @sm15455: https://aspit.co/web15-live #aspilive
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- #vs2013, #windowsserver 2012 r2, #sqlserver 2014 e #tfs 2013 annunciati a #msteched. approfondimenti in seguito: https://aspit.co/amo