संपादित करें: Updated समस्या परीक्षण पर आधारित विवरण - 12 सितं, 2011ईएफ 4.1 एकाधिक नेस्टेड इकाई शामिल नहीं है समर्थित नहीं है?
मैं जब भी मैं .ToList फोन() इस क्वेरी है कि एक NotSupportedException फेंकता है ("निर्दिष्ट विधि समर्थित नहीं है।")।
IQueryable<FileDefinition> query = db
.FileDefinitions
.Include(x => x.DefinitionChangeLogs)
.Include(x => x.FieldDefinitions.Select(y => y.DefinitionChangeLogs)) // bad
.Include(x => x.FieldDefinitions.Select(y => y.FieldValidationTables)) // bad
.Where(x => x.IsActive);
List<FileDefinition> retval = query.ToList();
अगर मैं या तो लाइन है कि मैं के रूप में "बुरा" टिप्पणी की है बाहर टिप्पणी, फिर क्वेरी काम करता है। मैंने अपने ऑब्जेक्ट मॉडल में एक ही प्रभाव के साथ विभिन्न नेस्टेड इकाइयों सहित भी कोशिश की है। किसी भी 2 सहित एक दुर्घटना का कारण बन जाएगा। नेस्टेड द्वारा, मेरा मतलब है नेविगेशन प्रॉपर्टी की नेविगेशन प्रॉपर्टी। मैंने स्ट्रिंग पथ के साथ विधियों को शामिल करने का भी प्रयास किया: एक ही परिणाम।
मेरे तालिका संरचना इस तरह दिखता है:
यह MySQL कनेक्टर/नेट 6.3.4 के साथ डेटाबेस स्टोर के रूप में MySQL 5.1 (InnoDB टेबल जाहिर है) का उपयोग कर रहा है।
तो मेरा सवाल है: यह क्यों काम नहीं करता है?
नोट: अगर मैं this link में संबंधित संस्थाओं को स्पष्ट रूप से लोड करता हूं तो मैं इसे काम पर ला सकता हूं। लेकिन मैं जानना चाहता हूं कि क्यों ईएफ मेरे डेटा मॉडल से नफरत करता है।
उत्तर: MySQL कनेक्टर जाहिरा तौर पर 2 नेस्टेड इकाई में शामिल हैं से निपटने में सक्षम नहीं है। यह NotSupportedException फेंकता है, नहीं .NET EF। यह वही त्रुटि तब भी मौजूद थी जब मैंने ईएफ 4.0 का उपयोग करके यह कोशिश की, लेकिन उस समय मेरे शोध ने मुझे विश्वास दिलाया कि यह समस्या पैदा करने वाली स्वयं-ट्रैकिंग संस्थाएं थीं। मैंने नवीनतम कनेक्टर को अपग्रेड करने का प्रयास किया, लेकिन यह Out of Sync error का कारण बन गया। MySQL से नफरत करने के लिए यह yet another reason है।
क्या होता है यदि * केवल * उसमें शामिल करें जिसे आपने "खराब" के रूप में चिह्नित किया है और अन्य दो को शामिल किया है? क्या यह तब काम करता है? – Slauma
@ स्लुमा हां, दूसरी पंक्ति स्वयं ही काम करती है। मैंने और परीक्षण किया, और ऐसा लगता है कि दूसरे और तीसरे के संयोजन में दुर्घटना का कारण बनता है। वे खुद से काम करते हैं, लेकिन एक साथ नहीं। FieldValidationTables संग्रह डेटाबेस में एक दृश्य से लोड किया गया है, और मुझे मैन्युअल रूप से ईएफ मॉडल में संबंध स्थापित करना पड़ा। इसमें फ़ील्डडिफिनिशन आईडी और टेबलनाम फ़ील्ड हैं। फील्डडिफिनशन 1 <-> * फ़ील्ड वैलिडेशनटेबल –
मुझे नहीं पता कि यह समस्या क्या है। उत्तर पाने के लिए आपको शायद अपने प्रश्न में अधिक जानकारी जोड़नी होगी (मूल रूप से समस्या को सरल उदाहरण मॉडल में अन्य लोगों के लिए पुन: उत्पन्न करने के लिए)। – Slauma