Sobes.tech
Middle

Mi az a változáskövetés (change tracking)?

sobes.tech MI

Válasz az MI-től

Változáskövetés egy mechanizmus ORM-ben (Object-Relational Mapper), például Entity Framework-ben, amely nyomon követi az adatszövetkezetben betöltött entitások (objektumok) állapotát. Meghatározza, hogy mely entitások lettek hozzáadva, módosítva vagy törölve, így a változtatások mentésekor a megfelelő INSERT, UPDATE vagy DELETE parancsokat hajtja végre.

Entitásállapotok:

  • Added: Objektum épp most lett létrehozva és hozzáadva a kontextushoz, de még nem lett mentve az adatbázisba.
  • Unchanged: Objektum az adatbázisból lett betöltve vagy mentve, változtatás nélkül.
  • Modified: Egy vagy több tulajdonsága meg lett változtatva a betöltés vagy mentés után.
  • Deleted: Objektum meg lett jelölve törlésre az adatbázisból.
  • Detached: Objektum nem követett a adatkontextus.
// Példa változáskövetésre Entity Framework Core-ban
using (var context = new MyDbContext())
{
    // Entitás betöltése
    var myEntity = context.MyEntities.Find(1);

    // Kezdeti állapot ellenőrzése
    Console.WriteLine($"Kezdeti állapot: {context.Entry(myEntity).State}"); // Unchanged-et fog mutatni

    // Tulajdonság módosítása
    myEntity.MyProperty = "Új Érték";

    // Állapot ellenőrzése módosítás után
    Console.WriteLine($"Módosítás utáni állapot: {context.Entry(myEntity).State}"); // Modified-et fog mutatni

    // Új entitás hozzáadása
    var newEntity = new MyEntity { MyProperty = "Még egy Új" };
    context.MyEntities.Add(newEntity);

    // Az új entitás állapotának ellenőrzése
    Console.WriteLine($"Az új entitás állapota: {context.Entry(newEntity).State}"); // Added-et fog mutatni

    // Entitás jelölése törlésre
    context.MyEntities.Remove(myEntity);

    // Törlés utáni állapot ellenőrzése
    Console.WriteLine($"Törlés utáni állapot: {context.Entry(myEntity).State}"); // Deleted-et fog mutatni

    // Változtatások mentése
    context.SaveChanges();
}