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
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Cancellare una run di un workflow di GitHub
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Recuperare App Service cancellati su Azure
Generare velocemente pagine CRUD in Blazor con QuickGrid
Creare una libreria CSS universale: Immagini
Collegare applicazioni server e client con .NET Aspire
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Eliminare una project wiki di Azure DevOps
Utilizzare Azure Cosmos DB con i vettori
Creare una libreria CSS universale: Clip-path
Ottimizzare le performance usando Span<T> e il metodo Split