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