2013-02-20 15 views
5

ठीक है, इसलिए this page के अनुसार, एंटीटी फ्रेमवर्क Include विधि के भीतर Select का उपयोग कर उत्सुकता से कई स्तरों को लोड करना चाहिए। शामिल हैं "अभिव्यक्ति की अमान्य प्रकार" दूसरी करने के लिए फोन पर -इकाई फ्रेमवर्क उत्सुक एकाधिक स्तर अपवाद लोड हो रहा है

var reports = _context.Reports 
    .Include(rt => rt.Fields) 
    .Include(rt => rt.Fields.Select(f => f.FieldType)) 
    .Include(rt => rt.Fields.Select(f => f.FieldType.FieldIdentifier)); 

फिर भी यह एक InvalidOperationException फेंकता है:

मैं निम्नलिखित कोड है। अपवाद EntityFrameworkHelper.CollectRelationalMemebers से आ रहा है।

मैंने Include संबंधित गुणों के तारों का उपयोग करने का भी प्रयास किया, लेकिन यह भी असफल रहा (मैं संभवतः तारों का उपयोग करने से बचने के बजाय यदि संभव हो तो)।

मैं .NET 4.0 के लिए ईएफ 5.0 डीएलएल का उपयोग कर रहा हूं। मेरे ईएफ वर्ग पुराने फैशन वाले डेटाबेस हैं- पहले EntityObject एस।

क्या किसी को कारण पता है और यदि कुछ भी है तो मैं इस अपवाद के बारे में क्या कर सकता हूं?

संपादित करें:

स्ट्रिंग संस्करण का उपयोग करते समय:

var reports = _context.Reports 
    .Include("Fields") 
    .Include("Fields.FieldType") 
    .Include("Fields.FieldType.FieldIdentifier")); 

यह InvalidOperationException फेंकता है - अभिव्यक्ति का अमान्य प्रकार।

+0

जब आप 'Include' के स्ट्रिंग-आधारित संस्करण का उपयोग करते हैं तो सटीक अपवाद संदेश क्या होता है? – Slauma

+0

उपरोक्त उत्तर देखें। – MgSam

+0

मेरा मतलब 'Include' के ** स्ट्रिंग ** आधारित संस्करण के लिए अपवाद था। – Slauma

उत्तर

0

मुद्दा जा रहा है कि एक 3 एक DLL हम का उपयोग किया था में पार्टी Include विस्तार विधि इकाई की रूपरेखा के Include पर पूर्वता हो रही थी समाप्त हो गया। तीसरी पार्टी एक अपवाद फेंक रहा था। इसे हटाने के बाद समस्या हल हो गई है।

विस्तार के तरीकों के साथ समस्याओं में से एक ...

हर किसी को मदद के लिए धन्यवाद।

19

आपके पास अनावश्यक शामिल है। आपको केवल अंतिम शामिल करने की आवश्यकता है, जिसमें उस पथ में कुछ भी शामिल होगा। उदाहरण:

var reports = _context.Reports 
    .Include(rt => rt.Fields.Select(f => f.FieldType.FieldIdentifier)); 
संबंधित मुद्दे