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
Utilizzare la session affinity con Azure Container Apps
Generare file PDF da Blazor WebAssembly con iText
Utilizzare un service principal per accedere a Azure Container Registry
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Eseguire attività pianificate con Azure Container Jobs
Utilizzare gli snapshot con Azure File shares
Utilizzare Model as a Service su Microsoft Azure
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Sfruttare al massimo i topic space di Event Grid MQTT
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Load test di ASP.NET Core con k6