Middle
Kas yra pakeitimų sekimas (change tracking)?
sobes.tech AI
Atsakymas iš AI
Pakeitimų sekimas – tai mechanizmas ORM (Object-Relational Mapper), tokio kaip Entity Framework, kuris stebi objektų (entitetų) būseną duomenų kontekste. Jis nustato, kurie objektai buvo pridėti, pakeisti ar ištrinti, kad įvykdytų atitinkamas INSERT, UPDATE ar DELETE komandas duomenų bazėje.
Entitetų būsenos:
- Added: Objektas ką tik sukurtas ir pridėtas į kontekstą, bet dar neįrašytas į duomenų bazę.
- Unchanged: Objektas įkeltas iš duomenų bazės arba buvo išsaugotas, ir jokių pakeitimų nėra.
- Modified: Vienas ar keli objekto ypatumai buvo pakeisti po įkėlimo iš duomenų bazės arba išsaugojimo.
- Deleted: Objektas pažymėtas ištrynimui iš duomenų bazės.
- Detached: Objektas nėra stebimas duomenų konteksto.
// Pakeitimų stebėjimo pavyzdys Entity Framework Core
using (var context = new MyDbContext())
{
// Entiteto įkėlimas
var myEntity = context.MyEntities.Find(1);
// Pradinės būsenos patikrinimas
Console.WriteLine($"Initial state: {context.Entry(myEntity).State}"); // Išves Unchanged
// Ypatybės pakeitimas
myEntity.MyProperty = "New Value";
// Būsenos patikrinimas po pakeitimo
Console.WriteLine($"State after modification: {context.Entry(myEntity).State}"); // Išves Modified
// Naujo entiteto pridėjimas
var newEntity = new MyEntity { MyProperty = "Another New One" };
context.MyEntities.Add(newEntity);
// Pridėto entiteto būsenos patikrinimas
Console.WriteLine($"State of new entity: {context.Entry(newEntity).State}"); // Išves Added
// Entiteto ištrynimas
context.MyEntities.Remove(myEntity);
// Ištrinto entiteto būsenos patikrinimas
Console.WriteLine($"State after removal: {context.Entry(myEntity).State}"); // Išves Deleted
// Pakeitimų išsaugojimas duomenų bazėje
context.SaveChanges();
}