Sobes.tech
Middle

Тартиби тағйиротҳо (change tracking) чист?

sobes.tech AI

Ҷавоб аз AI

Өзгөрүүлэлтийг хянах нь ORM (Object-Relational Mapper), жишээ нь Entity Framework-д, өгөгдлийн контекстэд ачаалсан объектуудын төлөвийг хянах механизм юм. Энэ нь ямар объект нэмэгдсэн, өөрчлөгдсөн эсвэл устгасан болохыг тодорхойлж, өгөгдлийн сан дахь өөрчлөлтийг хадгалах үед тохирох INSERT, UPDATE эсвэл DELETE тушаалуудыг гүйцэтгэдэг.

Объектын төлөвүүд:

  • Added: Объект шинээр бүтээгдсэн бөгөөд контекстэд нэмэгдсэн боловч одоогоор өгөгдлийн санд хадгалагдаагүй.
  • Unchanged: Объект өгөгдлийн сангаас ачаалсан эсвэл хадгалсан бөгөөд ямар ч өөрчлөлт хийгдээгүй.
  • Modified: Объектын нэг буюу хэд хэдэн шинж чанар нь ачаалсны дараа эсвэл хадгалсны дараа өөрчлөгдсөн.
  • Deleted: Объект устгах зорилгоор тэмдэглэгдсэн.
  • Detached: Объект өгөгдлийн контекстээс хамаарахгүй.
// Entity Framework Core-д өөрчлөлтүүдийг хянах жишээ
using (var context = new MyDbContext())
{
    // Объектийг ачаалах
    var myEntity = context.MyEntities.Find(1);

    // Эхлэлийн төлөвийг шалгах
    Console.WriteLine($"Эхний төлөв: {context.Entry(myEntity).State}"); // Unchanged-г харуулна

    // Өвөрмөц шинж чанарыг өөрчлөх
    myEntity.MyProperty = "Шинэ утга";

    // Өөрчлөлтийн дараах төлөвийг шалгах
    Console.WriteLine($"Өөрчлөлтийн дараах төлөв: {context.Entry(myEntity).State}"); // Modified-г харуулна

    // Шинэ объект нэмэх
    var newEntity = new MyEntity { MyProperty = "Өөр нэг шинэ" };
    context.MyEntities.Add(newEntity);

    // Шинэ объектын төлөвийг шалгах
    Console.WriteLine($"Шинэ объектын төлөв: {context.Entry(newEntity).State}"); // Added-г харуулна

    // Объектыг устгах тэмдэглэл хийх
    context.MyEntities.Remove(myEntity);

    // Устгасны дараах төлөвийг шалгах
    Console.WriteLine($"Устгасны дараах төлөв: {context.Entry(myEntity).State}"); // Deleted-г харуулна

    // Өөрчлөлтүүдийг хадгалах
    context.SaveChanges();
}