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($"Initial state: {context.Entry(myEntity).State}"); // გამოიტანს Unchanged

    // თვისების შეცვლა
    myEntity.MyProperty = "New Value";

    // ცვლილებების შემოწმება
    Console.WriteLine($"State after modification: {context.Entry(myEntity).State}"); // გამოიტანს Modified

    // ახალი ობიექტის დამატება
    var newEntity = new MyEntity { MyProperty = "Another New One" };
    context.MyEntities.Add(newEntity);

    // დამატებული ობიექტის მდგომარეობის შემოწმება
    Console.WriteLine($"State of new entity: {context.Entry(newEntity).State}"); // გამოიტანს Added

    // ობიექტის წაშლა
    context.MyEntities.Remove(myEntity);

    // წაშლილი ობიექტის მდგომარეობის შემოწმება
    Console.WriteLine($"State after removal: {context.Entry(myEntity).State}"); // გამოიტანს Deleted

    // ცვლილებების შენახვა მონაცემთა ბაზაში
    context.SaveChanges();
}