6

की आवश्यकता होती है, मुझे ईएफ की परिवर्तन ट्रैकिंग और आलसी लोडिंग सुविधाओं के कारण मेरे किसी एक प्रश्न में समस्या हो रही है। बात यह है कि जब मैं क्वेरी का परिणाम प्राप्त कर रहा हूं, तो मैं अपने व्यापार मॉडल में डोमेन ऑब्जेक्ट्स को मैप करने के लिए ऑटोमैपर का उपयोग कर रहा हूं लेकिन यह अपवाद फेंकता रहता है क्योंकि संदर्भ का निपटारा किया गया है।ऑब्जेक्ट कॉन्टेक्स्ट उदाहरण का निपटारा किया गया है और अब उन परिचालनों के लिए उपयोग नहीं किया जा सकता है जिनके लिए कनेक्शन

ObjectContext उदाहरण निपटारा कर दिया गया है और अब कार्य है कि एक कनेक्शन की आवश्यकता के लिए इस्तेमाल किया जा सकता।

जब मैं डिबगर में परिणामी संग्रह को देखो, मुझे लगता है कि यह और वास्तविक इकाई DynamicProxy की एक सूची नहीं है। मैंने चेंज ट्रैकिंग को रोकने की कोशिश की लेकिन इससे मदद नहीं मिली।

public List<ContentTypeColumn> GetContentTypeColumns(Int64 contentTypeId) 
    { 
     List<ContentTypeColumn> result = new List<ContentTypeColumn>(); 
     using (SCGREDbContext context = new SCGREDbContext()) 
     {     
      ContentType contentType = context.ContentTypes.Include("Parent").AsNoTracking().FirstOrDefault(x => x.Id.Equals(contentTypeId)); 

      result.AddRange(contentType.ContentTypeColumns.ToList()); 
      while (contentType.Parent != null) 
      { 
       result.AddRange(contentType.Parent.ContentTypeColumns.ToList()); 
       contentType = contentType.Parent; 
      }  
     } 
     return result.ToList(); 
    } 

नोट:: यहाँ मेरी कोड है आप पर नज़र रखने के लिए आप बस बदल सकते हैं आलसी लोड हो रहा है और गतिशील परिवर्तन को रोकने के लिए की जरूरत है आप this question.

+0

आलसी लोडिंग? इससे इसका कारण होगा। –

+0

मुझे पता है, और मैं इस विशेष मामले में आलसी लोडिंग से बचने की कोशिश कर रहा हूं, लेकिन मुझे इसके चारों ओर एक रास्ता नहीं मिल रहा है। कोई सुझाव? – Kassem

+0

संभावित डुप्लिकेट [त्रुटि को हल करने के लिए कैसे ऑब्जेक्ट कॉन्टेक्स्ट उदाहरण का निपटारा किया गया है और अब कनेक्शन के लिए आवश्यक संचालन के लिए उपयोग नहीं किया जा सकता है] (https://stackoverflow.com/questions/18398356/how-to-solve-the- त्रुटि-द-ऑब्जेक्ट कॉन्टेक्स्ट-इंस्टेंस-इन-डिस्पोजेड-एंड-कैन-नो-एल) –

उत्तर

19

का उल्लेख कर सकते आप अपने डोमेन के इस ऑपरेशन में शामिल मॉडल पर गौर करने की जरूरत है इसे बंद करें:

using (SCGREDbContext context = new SCGREDbContext()) 
{ 
    context.Configuration.ProxyCreationEnabled = false; 
    ... 
} 
+0

यह किया गया ... धन्यवाद :) – Kassem

+0

बिल्कुल सही! यह सिर्फ मुझे इतना समय बचाया! –