Entity Framework
ट्रैकिंग बनाम नो-ट्रैकिंग
खोज…
टिप्पणियों
ट्रैकिंग व्यवहार नियंत्रित करता है कि एंटिटी फ्रेमवर्क अपने परिवर्तन ट्रैकर में एक इकाई उदाहरण के बारे में जानकारी रखेगा या नहीं। यदि किसी इकाई को ट्रैक किया जाता है, तो इकाई में सेव किए गए किसी भी परिवर्तन को SaveChanges() दौरान डेटाबेस में रखा जाएगा।
ट्रैकिंग क्वेश्चन
- डिफ़ॉल्ट रूप से, क्वेरी प्रकार जो वापसी इकाई को ट्रैक कर रहे हैं
- इसका मतलब है कि आप उन इकाई उदाहरणों में परिवर्तन कर सकते हैं और उन परिवर्तनों को
SaveChanges()द्वारा जारी रखा गया है
उदाहरण :
-
SaveChanges()दौरानbookरेटिंग में परिवर्तन का पता लगाया जाएगा और डेटाबेस को जारी रखा जाएगा।
using (var context = new BookContext())
{
var book = context.Books.FirstOrDefault(b => b.BookId == 1);
book.Rating = 5;
context.SaveChanges();
}
नो-ट्रैकिंग क्वेश्चन
- जब परिणाम
read-onlyपरिदृश्य में उपयोग किए जाते हैं, तो कोई ट्रैकिंग क्वेरी उपयोगी नहीं होती है - वे
quicker to executeहैं क्योंकि ट्रैकिंग परिवर्तन जानकारी को सेटअप करने की कोई आवश्यकता नहीं है
उदाहरण :
using (var context = new BookContext())
{
var books = context.Books.AsNoTracking().ToList();
}
EF Core 1.0 के साथ आप context instance स्तर पर डिफ़ॉल्ट ट्रैकिंग व्यवहार को बदलने में सक्षम हैं।
उदाहरण :
using (var context = new BookContext())
{
context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
var books = context.Books.ToList();
}
ट्रैकिंग और अनुमान
- यदि क्वेरी का परिणाम प्रकार एक इकाई प्रकार नहीं है, भले ही परिणाम
contains entityप्रकारcontains entity, फिर भी उन्हेंtracked by defaultजाएगा
उदाहरण :
निम्नलिखित क्वेरी में, जो एक
anonymous typeलौटाता है, परिणाम सेट मेंBookके उदाहरणों कोwill be trackedकियाwill be trackedusing (var context = new BookContext()) { var book = context.Books.Select(b => new { Book = b, Authors = b.Authors.Count() }); }परिणाम सेट तो
does notकोई भीentityप्रकार है, तोno trackingकिया जाता है
उदाहरण :
निम्नलिखित क्वेरी में, जो इकाई से कुछ मूल्यों के साथ एक
anonymous typeलौटाता है (लेकिन वास्तविकentityप्रकार काno instances), कोई ट्रैकिंग प्रदर्शन नहीं है।using (var context = new BookContext()) { var book = context.Books.Select(b => new { Id = b.BookId, PublishedDate = b.Date }); }