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