Middle
Cos'è il change tracking?
sobes.tech AI
Risposta dell'AI
Il tracciamento delle modifiche è un meccanismo in ORM (Object-Relational Mapper), come Entity Framework, che tiene traccia dello stato delle entità (oggetti) caricate nel contesto dati. Determina quali entità sono state aggiunte, modificate o eliminate, in modo che al salvataggio delle modifiche nel database vengano eseguiti i comandi appropriati INSERT, UPDATE o DELETE.
Stati delle entità:
- Added: Oggetto appena creato e aggiunto al contesto, ma non ancora salvato nel database.
- Unchanged: Oggetto caricato dal database o salvato, senza modifiche.
- Modified: Uno o più attributi dell'oggetto sono stati modificati dopo il caricamento o il salvataggio.
- Deleted: Oggetto contrassegnato per essere eliminato dal database.
- Detached: Oggetto non tracciato dal contesto dati.
// Esempio di tracciamento delle modifiche in Entity Framework Core
using (var context = new MyDbContext())
{
// Caricare entità
var myEntity = context.MyEntities.Find(1);
// Verificare lo stato iniziale
Console.WriteLine($"Stato iniziale: {context.Entry(myEntity).State}"); // Mostrerà Unchanged
// Modificare proprietà
myEntity.MyProperty = "Nuovo Valore";
// Verificare lo stato dopo modifica
Console.WriteLine($"Stato dopo modifica: {context.Entry(myEntity).State}"); // Mostrerà Modified
// Aggiungere una nuova entità
var newEntity = new MyEntity { MyProperty = "Un'altra Nuova" };
context.MyEntities.Add(newEntity);
// Verificare lo stato della nuova entità
Console.WriteLine($"Stato della nuova entità: {context.Entry(newEntity).State}"); // Mostrerà Added
// Contrassegnare l'entità per eliminazione
context.MyEntities.Remove(myEntity);
// Verificare lo stato dopo eliminazione
Console.WriteLine($"Stato dopo eliminazione: {context.Entry(myEntity).State}"); // Mostrerà Deleted
// Salvare le modifiche nel database
context.SaveChanges();
}