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
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Determinare lo stato di un pod in Kubernetes
Gestire i null nelle reactive form tipizzate di Angular
Sfruttare lo streaming di una chiamata Http da Blazor
Come migrare da una form non tipizzata a una form tipizzata in Angular
Usare una container image come runner di GitHub Actions
Reactive form tipizzati con modellazione del FormBuilder in Angular
Utilizzare la session affinity con Azure Container Apps
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Hosting di componenti WebAssembly in un'applicazione Blazor static
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8