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