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