Sobes.tech
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();
}