Middle
O'zgarishlarni kuzatish (change tracking) nima?
sobes.tech AI
AIdan javob
Oʻzgarishlarni kuzatish — bu ORM (Object-Relational Mapper), masalan, Entity Framework, maʼlumotlar kontekstiga yuklangan obʼyektlarning holatini kuzatuvchi mexanizm. U bazaga saqlashda INSERT, UPDATE yoki DELETE buyruqlari bajarilishi uchun qaysi obʼyektlar qoʻshilgan, oʻzgartirilgan yoki oʻchirilganligini aniqlaydi.
Obʼyektlarning holatlari:
- Added: Yangi yaratilgan va kontekstga qoʻshilgan obʼyekt, ammo hali bazaga saqlanmagan.
- Unchanged: Bazadan yuklangan yoki saqlangan obʼyekt va hech qanday oʻzgarishlar kiritilmagan.
- Modified: Obʼyektning bir yoki bir nechta xususiyatlari yuklangan yoki saqlangandan keyin oʻzgartirilgan.
- Deleted: Bazadan oʻchirilishi uchun belgilangan obʼyekt.
- Detached: Obʼyekt maʼlumotlar kontekstida kuzatilmaydi.
// Entity Framework Coreda oʻzgarishlarni kuzatish misoli
using (var context = new MyDbContext())
{
// Obʼyektni yuklash
var myEntity = context.MyEntities.Find(1);
// Dastlabki holatni tekshirish
Console.WriteLine($"Dastlabki holat: {context.Entry(myEntity).State}"); // Unchanged koʻrsatadi
// Xususiyatni oʻzgartirish
myEntity.MyProperty = "Yangi Qiymat";
// Oʻzgartirishdan keyingi holatni tekshirish
Console.WriteLine($"Oʻzgartirishdan keyingi holat: {context.Entry(myEntity).State}"); // Modified koʻrsatadi
// Yangi obʼyekt qoʻshish
var newEntity = new MyEntity { MyProperty = "Yana Bir Yangi" };
context.MyEntities.Add(newEntity);
// Yangi obʼyekt holatini tekshirish
Console.WriteLine($"Yangi obʼyekt holati: {context.Entry(newEntity).State}"); // Added koʻrsatadi
// Obʼyektni oʻchirish uchun belgilash
context.MyEntities.Remove(myEntity);
// Oʻchirishdan keyingi holatni tekshirish
Console.WriteLine($"Oʻchirishdan keyingi holat: {context.Entry(myEntity).State}"); // Deleted koʻrsatadi
// Oʻzgarishlarni bazaga saqlash
context.SaveChanges();
}