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