Middle
Šta je praćenje promena (change tracking)?
sobes.tech АИ
Одговор од АИ
Praćenje promena je mehanizam u ORM (Object-Relational Mapper), kao što je Entity Framework, koji prati stanje entiteta (objekata) učitanih u kontekst podataka. Određuje koji entiteti su dodati, izmenjeni ili obrisani, tako da se prilikom čuvanja promena u bazi podataka izvrše odgovarajuće komande INSERT, UPDATE ili DELETE.
Stanja entiteta:
- Added: Objekat je upravo kreiran i dodat u kontekst, ali još uvek nije sačuvan u bazi.
- Unchanged: Objekat je učitan iz baze ili sačuvan, bez izmena.
- Modified: Jedno ili više svojstava objekta je izmenjeno nakon učitavanja ili čuvanja.
- Deleted: Objekat je označen za brisanje iz baze.
- Detached: Objekat nije praćen od strane konteksta podataka.
// Primer praćenja promena u Entity Framework Core
using (var context = new MyDbContext())
{
// Učitavanje entiteta
var myEntity = context.MyEntities.Find(1);
// Provera početnog stanja
Console.WriteLine($"Početno stanje: {context.Entry(myEntity).State}"); // Prikazaće Unchanged
// Izmena svojstva
myEntity.MyProperty = "NOVA VREDNOST";
// Provera stanja nakon izmene
Console.WriteLine($"Stanje nakon izmene: {context.Entry(myEntity).State}"); // Prikazaće Modified
// Dodavanje nove entiteta
var newEntity = new MyEntity { MyProperty = "Još jedna nova" };
context.MyEntities.Add(newEntity);
// Provera stanja nove entiteta
Console.WriteLine($"Stanje nove entiteta: {context.Entry(newEntity).State}"); // Prikazaće Added
// Obeležavanje entiteta za brisanje
context.MyEntities.Remove(myEntity);
// Provera stanja nakon brisanja
Console.WriteLine($"Stanje nakon brisanja: {context.Entry(myEntity).State}"); // Prikazaće Deleted
// Čuvanje promena
context.SaveChanges();
}