Nello script #564 abbiamo visto come usare il metodo AsNoTrackingWithIdentityResolution a per impostare il tracking delle entity a livello di query. Esistono applicazioni che fanno un enorme uso di query di sola lettura e che non hanno bisogno di modificare i dati o li modificano solo in pochissimi casi. Per questo genere di applicazioni può aver senso impostare come default il fatto di non eseguire il tracking delle entity e abilitre il tracking a livello di query solo dove necessario.
Per fare questo, per prima cosa dobbiamo impostare a livello di configurazione il comportamento di tutte le query tramite il metodo UseQueryTrackingBehavior.
public class MyContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTrackingWithIdentityResolution); }
Se stiamo sviluppando una applicazione ASP.NET, usiamo il metodo AddDbContext in startup.
services.AddDbContext<MyContext>(c => { c.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTrackingWithIdentityResolution); });
Ora che abbiamo impostato il nuovo comportamento di default per le query, per quelle dove vogliamo abilitare il tracking dobbiamo usare il metodo AsTracking.
var people = ctx.People .AsTracking() .Include(p => p.Children) .Where(c => c.CittaNascita == "Roma") .ToList();
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare un hash con SHA-3 in .NET
Gestione CSS in Blazor con .NET 9
Generare velocemente pagine CRUD in Blazor con QuickGrid
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Configurare e gestire sidecar container in Azure App Service
Utilizzare Hybrid Cache in .NET 9
Creare una libreria CSS universale: Nav menu
Utilizzare Locust con Azure Load Testing
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
La gestione della riconnessione al server di Blazor in .NET 9
Triggerare una pipeline su un altro repository di Azure DevOps
Referenziare un @layer più alto in CSS
I più letti di oggi
- a #RealCodeConf4 il 25 maggio a Firenze parleremo di #silverlight4. iscrizioni gratis su http://u.aspitalia.com/g9
- Parallelizzare le chiamate HTTP con async/await e le Promise in JavaScript
- Rendere sicuro l'endpoint di HealthCheck in ASP.NET Core
- #HTML5 schema per avere l'intellisense su #VS2008 (anche express) http://u.aspitalia.com/ed
- Eseguire una chiamata AJAX per inviare dati al server in Angular 2