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
Gestire il colore CSS con HWB
Criptare la comunicazione con mTLS in Azure Container Apps
.NET Conference Italia 2024
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Utilizzare Tailwind CSS all'interno di React: primi componenti
Applicare un filtro per recuperare alcune issue di GitHub
Sfruttare al massimo i topic space di Event Grid MQTT
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Assegnare un valore di default a un parametro di una lambda in C#