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