რა არის ტრეკინგი 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 რესურსებს არ ხარჯავს სუბიექტების მდგომარეობის ტრეკინგზე.