Middle
Ce este urmărirea modificărilor (change tracking)?
sobes.tech AI
Răspuns de la AI
Urmărirea modificărilor este un mecanism în ORM (Object-Relational Mapper), cum ar fi Entity Framework, care urmărește starea entităților (obiectelor) încărcate în contextul de date. Acesta determină care entități au fost adăugate, modificate sau eliminate, astfel încât la salvarea modificărilor în bază de date să fie executate comenzile corespunzătoare INSERT, UPDATE sau DELETE.
Stările entităților:
- Added: Obiect nou creat și adăugat în context, dar încă neînregistrat în bază.
- Unchanged: Obiect încărcat din bază sau salvat, fără modificări.
- Modified: Unul sau mai multe proprietăți ale obiectului au fost modificate după încărcare sau salvare.
- Deleted: Obiect marcat pentru ștergere din bază.
- Detached: Obiect care nu este urmărit de contextul de date.
// Exemplu de urmărire a modificărilor în Entity Framework Core
using (var context = new MyDbContext())
{
// Încărcare entitate
var myEntity = context.MyEntities.Find(1);
// Verificare stare inițială
Console.WriteLine($"Stare inițială: {context.Entry(myEntity).State}"); // Va afișa Unchanged
// Modificare proprietate
myEntity.MyProperty = "Valoare Nouă";
// Verificare stare după modificare
Console.WriteLine($"Stare după modificare: {context.Entry(myEntity).State}"); // Va afișa Modified
// Adăugare entitate nouă
var newEntity = new MyEntity { MyProperty = "Altă Nouă" };
context.MyEntities.Add(newEntity);
// Verificare stare entitate nouă
Console.WriteLine($"Stare entitate nouă: {context.Entry(newEntity).State}"); // Va afișa Added
// Marcare entitate pentru ștergere
context.MyEntities.Remove(myEntity);
// Verificare stare după ștergere
Console.WriteLine($"Stare după ștergere: {context.Entry(myEntity).State}"); // Va afișa Deleted
// Salvare modificări
context.SaveChanges();
}