Sobes.tech
Middle

რა არის ტრეკინგი Entity Framework-ში?

sobes.tech AI

პასუხი AI-სგან

Entity Tracking (სუბიექტების ტრეკირება) არის მექანიზმი Entity Framework Core-ში, რომელიც აკვირდება მონაცემთა ბაზიდან ჩატვირთული სუბიექტების ობიექტებზე განხორციელებულ ცვლილებებს. კონტექსტი ინახავს ინფორმაციას თითოეული ჩატვირთული სუბიექტის მდგომარეობის შესახებ და შეუძლია SQL-სკრიპტების გენერირება მონაცემთა ბაზის განახლებისთვის ცვლილებების შენახვის დროს (DbContext.SaveChanges()).

ძირითადი მდგომარეობები:

  • Added: სუბიექტი დამატებულია კონტექსტში, მაგრამ ჯერ არ არსებობს მონაცემთა ბაზაში.
  • Unchanged: სუბიექტი ჩატვირთულია მონაცემთა ბაზიდან და მისი თვისებები არ არის შეცვლილი.
  • Modified: ზოგიერთი თვისება სუბიექტში შეიცვალა მას შემდეგ, რაც ის ჩატვირთულია მონაცემთა ბაზიდან.
  • Deleted: სუბიექტი მითითებულია წაშლისთვის მონაცემთა ბაზიდან.
  • Detached: სუბიექტი კონტექსტის მიერ არ არის ტრეკირებული.

ჩვეულებრივ, LINQ-სა და სხვა კითხვებზე მუშაობისას, სუბიექტები ტრეკირებულია. ეს საშუალებას აძლევს Entity Framework-ს ავტომატურად განსაზღვროს, რა ცვლილებები უნდა შეინახოს.

მოჩვენებითი მაგალითი ტრეკირების მითითებისთვის:

// ტრეკირებული კითხვა
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// ტრეკირებადი არაა
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

AsNoTracking()-ის გამოყენებით ტრეკირების გამორთვა შეიძლება გაზარდოს კითხვების შესრულების სიჩქარე, თუ ცვლილებების შენახვა მონაცემთა ბაზაში არ გჭირდებათ, რადგან EF რესურსებს არ ხარჯავს სუბიექტების მდგომარეობის ტრეკინგზე.