Sobes.tech
Middle

Mis on muudatuste jälgimine (change tracking)?

sobes.tech AI

Vastus AI-lt

Muutuste jälgimine – see on mehhanism ORM-is (Object-Relational Mapper), näiteks Entity Framework, mis jälgib objektide (entiteetide) olekut andmekontekstis. See määrab, millised objektid on lisatud, muudetud või kustutatud, et andmebaasis tehtud muudatused saaksid vastavalt täidetud INSERT, UPDATE või DELETE käskud.

Objektide olekud:

  • Added: Objekt on just loodud ja lisatud konteksti, kuid pole veel andmebaasi salvestatud.
  • Unchanged: Objekti on laaditud andmebaasist või see on salvestatud ning muudatusi pole tehtud.
  • Modified: Üks või mitu objekti omadust on pärast andmebaasist laadimist või salvestamist muudetud.
  • Deleted: Objekti on märgitud kustutamiseks andmebaasist.
  • Detached: Objekt ei ole andmekontekstiga jälgitud.
// Muudatuste jälgimise näide Entity Framework Core'is
using (var context = new MyDbContext())
{
    // Objekti laadimine
    var myEntity = context.MyEntities.Find(1);

    // Algse oleku kontroll
    Console.WriteLine($"Initial state: {context.Entry(myEntity).State}"); // Väljundib Unchanged

    // Omaduse muutmine
    myEntity.MyProperty = "New Value";

    // Oleku kontroll pärast muutust
    Console.WriteLine($"State after modification: {context.Entry(myEntity).State}"); // Väljundib Modified

    // Uue objekti lisamine
    var newEntity = new MyEntity { MyProperty = "Another New One" };
    context.MyEntities.Add(newEntity);

    // Lisatud objekti oleku kontroll
    Console.WriteLine($"State of new entity: {context.Entry(newEntity).State}"); // Väljundib Added

    // Objekti kustutamine
    context.MyEntities.Remove(myEntity);

    // Kustutatud objekti oleku kontroll
    Console.WriteLine($"State after removal: {context.Entry(myEntity).State}"); // Väljundib Deleted

    // Muudatuste salvestamine andmebaasi
    context.SaveChanges();
}