La classe DbContext di Entity Framework Core espone la proprietà ChangeTracker di tipo ChangeTracker. Questa classe mette a disposizione il metodo TrackGraph che permette di attaccare un oggetto al contesto e di avere un callback per ogni oggetto complesso che questo referenzia così da poter impostare anche lo stato degli oggetti collegati.
Per fare un esempio, supponiamo di avere un ordine a cui abbiamo collegati un cliente e i dettagli. Se invochiamo il metodo Add del contesto, tutti gli oggetti collegati all'ordine vengono impostati in stato Added e verranno quindi inseriti quando invochiamo il metodo SaveChanges. Se per l'ordine e i dettagli questo è il comportamento desiderato, per il cliente invece dovremmo poter impostare lo stato di Unchanged. Con il metodo TrackGraph possiamo ottenere questo risultato usando il seguente codice.
var order = new Order { ... };
context.ChangeTracker.TrackGraph(order , e => {
if (e.Entry.IsKeySet)
{
e.Entry.State = EntityState.Unchanged;
}
else
{
e.Entry.State = EntityState.Added;
}
});Il primo parametro del metodo accetta l'oggetto principale (l'ordine nel nostro caso). Il secondo parametro è una funzione che viene invocata per l'oggetto principale e per ogni oggetto a esso collegato (nel nostro caso per il cliente o per ogni ordine). Se la chiave primaria è impostata (come sicuramente lo è per il cliente), l'oggetto viene impostato in stato di Unchanged, in caso contrario (come per l'ordine e i dettagli) viene impostato in stato di Added.
Ovviamente questa è la logica usata nel nostro esempio, ma può essere completamente personalizzata in base alle necessità.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Abilitare .NET 10 su Azure App Service e Azure Functions
Keynote Global Azure 2026 - ASPItalia.com
Ridimensionamento automatico input tramite CSS
Integrazione di Copilot in .NET Aspire
Eseguire i pre-commit hook di git con dependabot
Utilizzare le librerie native di .NET per comprimere uno o più file in formato ZIP
Esporre tool MCP da API REST con Azure App Service
Microsoft Fabric: la piattaforma unificata per l'ecosistema dati moderno
Agentic Workflows in GitHub
Modificare lo stile in una QuickGrid Blazor
Stop Building Chatbots. Build a team
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework


