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
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Inizializzare i container in Azure Container Apps
Definire stili a livello di libreria in Angular
Utilizzare gli snapshot con Azure File shares
Semplificare il deployment di siti statici con Azure Static Web App
Creare moduli CSS in React
Miglioramenti nelle performance di Angular 16
Specificare il versioning nel path degli URL in ASP.NET Web API
Generare file per il download da Blazor WebAssembly
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Eseguire operazioni con timeout in React