Sobes.tech
Middle

Čo je sledovanie zmien (change tracking)?

sobes.tech AI

Odpoveď od AI

Sledovanie zmien je mechanizmus v ORM (Object-Relational Mapper), ako je Entity Framework, ktorý sleduje stav entít (objektov) načítaných v dátovom kontexte. Určuje, ktoré entity boli pridané, zmenené alebo odstránené, aby pri ukladaní zmien do databázy boli vykonané príslušné príkazy INSERT, UPDATE alebo DELETE.

Stavy entít:

  • Added: Objekt práve vytvorený a pridaný do kontextu, ale ešte nie je uložený do databázy.
  • Unchanged: Objekt načítaný z databázy alebo uložený, bez zmien.
  • Modified: Jeden alebo viac vlastností objektu bolo zmenených po jeho načítaní alebo uloženie.
  • Deleted: Objekt označený na odstránenie z databázy.
  • Detached: Objekt nie je sledovaný dátovým kontextom.
// Príklad sledovania zmien v Entity Framework Core
using (var context = new MyDbContext())
{
    // Načítanie entity
    var myEntity = context.MyEntities.Find(1);

    // Kontrola počiatočného stavu
    Console.WriteLine($"Počiatočný stav: {context.Entry(myEntity).State}"); // Zobrazí Unchanged

    // Zmena vlastnosti
    myEntity.MyProperty = "Nová hodnota";

    // Kontrola stavu po zmene
    Console.WriteLine($"Stav po zmene: {context.Entry(myEntity).State}"); // Zobrazí Modified

    // Pridanie novej entity
    var newEntity = new MyEntity { MyProperty = "Ďalšia nová" };
    context.MyEntities.Add(newEntity);

    // Kontrola stavu novej entity
    Console.WriteLine($"Stav novej entity: {context.Entry(newEntity).State}"); // Zobrazí Added

    // Označenie entity na odstránenie
    context.MyEntities.Remove(myEntity);

    // Kontrola stavu po odstránení
    Console.WriteLine($"Stav po odstránení: {context.Entry(myEntity).State}"); // Zobrazí Deleted

    // Uloženie zmien
    context.SaveChanges();
}