Middle
Dəyişikliklərin izlənməsi (change tracking) nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Dəyişikliklərin izlənməsi ORM (Object-Relational Mapper) daxilində, məsələn, Entity Framework kimi mexanizmdir və məlumat kontekstində yüklənmiş varlıqların (obyektlərin) vəziyyətini izləyir. Bu, bazaya dəyişikliklərin qeyd olunması zamanı müvafiq INSERT, UPDATE və ya DELETE əmrlərinin yerinə yetirilməsini təmin edir.
Varlıqların vəziyyətləri:
- Added: Obyekt yeni yaradılıb və kontekstə əlavə olunub, lakin hələ bazaya qeyd olunmayıb.
- Unchanged: Obyekt bazadan yüklənib və ya qeyd olunub, heç bir dəyişiklik edilməyib.
- Modified: Obyektin bir və ya daha çox xüsusiyyəti yükləndikdən və ya qeyd olunduqdan sonra dəyişdirilib.
- Deleted: Obyekt bazadan silinmək üçün işarələnib.
- Detached: Obyekt məlumat kontekstində izlənmir.
// Entity Framework Core-də dəyişikliklərin izlənməsi nümunəsi
using (var context = new MyDbContext())
{
// Varlıqları yüklə
var myEntity = context.MyEntities.Find(1);
// Başlanğıc vəziyyətini yoxla
Console.WriteLine($"Başlanğıc vəziyyəti: {context.Entry(myEntity).State}"); // Unchanged göstərəcək
// Xüsusiyyəti dəyiş
myEntity.MyProperty = "Yeni Dəyər";
// Dəyişiklikdən sonra vəziyyəti yoxla
Console.WriteLine($"Dəyişiklikdən sonra vəziyyət: {context.Entry(myEntity).State}"); // Modified göstərəcək
// Yeni varlıq əlavə et
var newEntity = new MyEntity { MyProperty = "Başqa Yeni" };
context.MyEntities.Add(newEntity);
// Yeni varlığın vəziyyətini yoxla
Console.WriteLine($"Yeni varlığın vəziyyəti: {context.Entry(newEntity).State}"); // Added göstərəcək
// Varlıqları silmək üçün işarə et
context.MyEntities.Remove(myEntity);
// Silindikdən sonra vəziyyəti yoxla
Console.WriteLine($"Silindikdən sonra vəziyyət: {context.Entry(myEntity).State}"); // Deleted göstərəcək
// Dəyişiklikləri bazaya qeyd et
context.SaveChanges();
}