Detach(object entity)
पर नहीं है DbContext
।
क्या मेरे पास पहले EF कोड पर वस्तुओं को अलग करने की क्षमता है?
Detach(object entity)
पर नहीं है DbContext
।
क्या मेरे पास पहले EF कोड पर वस्तुओं को अलग करने की क्षमता है?
जवाबों:
यदि आप मौजूदा वस्तु का पालन करना चाहते हैं तो @ सलुमा की सलाह का पालन करें। यदि आप ट्रैकिंग परिवर्तनों के उपयोग के बिना वस्तुओं को लोड करना चाहते हैं:
var data = context.MyEntities.AsNoTracking().Where(...).ToList();
जैसा कि टिप्पणी में उल्लेख किया गया है यह पूरी तरह से संस्थाओं को अलग नहीं करेगा। वे अभी भी संलग्न हैं और आलसी लोडिंग कार्य करते हैं, लेकिन संस्थाओं को ट्रैक नहीं किया जाता है। इसका उपयोग उदाहरण के लिए किया जाना चाहिए यदि आप केवल डेटा पढ़ने के लिए इकाई लोड करना चाहते हैं और आप उन्हें संशोधित करने की योजना नहीं बनाते हैं।
यह एक विकल्प है:
dbContext.Entry(entity).State = EntityState.Detached;
entity
एक प्रकार का भौतिक वस्तु होना चाहिए जो आपके मॉडल वर्गों (व्यक्ति, ग्राहक, आदेश, आदि) का हिस्सा हो। आप सीधे IQueryable <T> में नहीं जा सकते dbContext.Entry(...)
। क्या यह सवाल आपका मतलब है?
Detached
। यदि आप डीबी से संस्थाओं को संदर्भ (बिना किसी परिवर्तन के ट्रैकिंग) में संलग्न किए बिना लोड करना चाहते हैं, तो उपयोग करें AsNoTracking
।
Detached
।
using(ctx){ return ctx....ToList(); }
। ऐसे मामलों में उपयोगAsNoTracking()
करने से बहुत समझ में आता है क्योंकि मैं ऑब्जेक्ट संदर्भ को अनावश्यक रूप से भरना चाहता हूं। मुझे लगता है कि यह विशेष रूप से बड़ी सूचियों के लिए प्रदर्शन और स्मृति खपत का लाभ होगा, है ना?