Sobes.tech
Middle

Kas ir izmaiņu uzskaite (change tracking)?

sobes.tech AI

Atbilde no AI

Izmaiņu uzskaite – tas ir mehānisms ORM (Object-Relational Mapper), piemēram, Entity Framework, kas uzrauga objektu (entītiju) stāvokli datu kontekstā. Tas nosaka, kuri entītija ir pievienota, mainīta vai dzēsta, lai datu bāzē tiktu izpildīti atbilstoši INSERT, UPDATE vai DELETE komandas.

Entītiju stāvokļi:

  • Added: Objekts tikko izveidots un pievienots kontekstam, bet vēl nav saglabāts datu bāzē.
  • Unchanged: Objekts ir ielādēts no datu bāzes vai ir saglabāts, un nav veiktas izmaiņas.
  • Modified: Viens vai vairāki objekta īpašumi ir mainīti pēc ielādes no datu bāzes vai saglabāšanas.
  • Deleted: Objekts ir atzīmēts dzēšanai no datu bāzes.
  • Detached: Objekts nav uzraudzīts datu kontekstā.
// Izmaiņu uzraudzības piemērs Entity Framework Core
using (var context = new MyDbContext())
{
    // Entītijas ielāde
    var myEntity = context.MyEntities.Find(1);

    // Sākotnējā stāvokļa pārbaude
    Console.WriteLine($"Initial state: {context.Entry(myEntity).State}"); // Izvadīs Unchanged

    // Īpašības maiņa
    myEntity.MyProperty = "New Value";

    // Stāvokļa pārbaude pēc izmaiņām
    Console.WriteLine($"State after modification: {context.Entry(myEntity).State}"); // Izvadīs Modified

    // Jaunas entītijas pievienošana
    var newEntity = new MyEntity { MyProperty = "Another New One" };
    context.MyEntities.Add(newEntity);

    // Pievienotās entītijas stāvokļa pārbaude
    Console.WriteLine($"State of new entity: {context.Entry(newEntity).State}"); // Izvadīs Added

    // Entītijas dzēšana
    context.MyEntities.Remove(myEntity);

    // Dzēstās entītijas stāvokļa pārbaude
    Console.WriteLine($"State after removal: {context.Entry(myEntity).State}"); // Izvadīs Deleted

    // Izmaiņu saglabāšana datu bāzē
    context.SaveChanges();
}