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