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
Effettuare il refresh dei dati di una QuickGrid di Blazor
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Assegnare un valore di default a un parametro di una lambda in C#
Eseguire una query su SQL Azure tramite un workflow di GitHub
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Aggiungere interattività lato server in Blazor 8
Utilizzare Copilot con Azure Cosmos DB
Disabilitare automaticamente un workflow di GitHub (parte 2)
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
I più letti di oggi
- Build 2016: segui con noi in live streaming!
- Build 2017: segui con noi tutte le novità mercoledì 10 e giovedì 11 maggio da Seattle!
- Microsoft Visual Studio Code: un nuovo editor gratuito per Windows, MacOSX e Linux per sviluppatori ASP.NET e Node.js
- Usare gRPC come infrastruttura per i nostri servizi web
- Utilizzare QuickGrid di Blazor con Entity Framework
- Realizzare una Progressive Web Application con Blazor e ASP.NET Core
- Abilitare e gestire il prerendering nelle applicazioni Blazor WebAssembly
- ASP.NET 4.5 e Visual Studio 2012 Live - Online
- Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
- Gestire la cancellazione di una richiesta in streaming da Blazor