2010-02-25 12 views
5

द्वारा समर्थित नहीं है I MySQL के साथ इकाई फ्रेमवर्क का उपयोग कर रहा हूं। निम्न क्वेरी एक त्रुटि परिणाम:बाहरी आवेदन MySQL

var foobar = ctx.ArticleBase.OfType<ActicleSpecial>().Include("CreatedBy.Image.Location").ToList(); 

त्रुटि: "बाहरी लागू MySQL द्वारा समर्थित नहीं है" मैं भी "क्रॉस लागू MySQL द्वारा समर्थित नहीं है" एक छोटे से अलग क्वेरी पर मिलता है। alt text http://i48.tinypic.com/5x4kdc.jpg

छवि इकाई को छोड़कर स्थान इकाई (कई संबंध के लिए एक) है नामित स्थान संबंध और ग्राहक आधार में UserSpecial के बजाय छवि रिश्ता नहीं है:

मैं निम्नलिखित डेटामॉडल है।

मुझे यह त्रुटि क्यों मिलती है? इस त्रुटि से कैसे बचें? क्या यह संभव है?

+0

अपने ओरेकल या तो :( – gbjbaanb

+0

ग्राफिक्स – thomaspaulb

उत्तर

3

इस त्रुटि MySQL से आ रही है, तो है दो चीजों में से एक हुआ है:

  1. आप प्रदाता ठीक से कॉन्फ़िगर नहीं किया है।
  2. आपके ईएफ प्रदाता में एक बग है।

इस त्रुटि अपने MySQL एफई प्रदाता से आ तो रही है, तो दो में से एक हुआ है:

  1. आप सही ढंग से प्रदाता कॉन्फ़िगर नहीं किया है।
  2. आपके ईएफ प्रदाता में एक सीमा है।

एसक्यूएल प्रदाता द्वारा उत्पन्न होता है। आप ProviderManifestToken attribute in EDMX के माध्यम से सर्वर-संस्करण-विशिष्ट SQL पीढ़ी को कॉन्फ़िगर कर सकते हैं। इस प्रकार आप प्रदाता को SQL सुविधाओं का उपयोग न करने के बारे में बताते हैं जो पुराने सर्वर संस्करण समर्थित नहीं हैं।

यह संभव है कि कुछ MySQL स्टोरेज इंजन SQL सुविधाओं का समर्थन करते हैं जो अन्य नहीं करते हैं। इस मामले में, प्रदाता को या तो चुनने की अनुमति देने के लिए अधिकांश इंजनों द्वारा समर्थित सुविधाओं के एक सामान्य सबसेट का उपयोग करना होगा या ProviderManifestToken का उपयोग करना होगा।

हालांकि, यह भी संभव है कि एक छोटी गाड़ी प्रदाता बस गलत SQL लौटाता है। यदि यह मामला है तो आपको या तो एक अद्यतन मिलना चाहिए या बग को छूने वाले प्रश्नों से बचना चाहिए।

अद्यतन: @ देवर्ट के उत्तर के आधार पर, ऐसा लगता है कि यह प्रदाता की एक सीमा है, जिसे MySQL की सीमाओं के कारण बनाया गया है। ईएफ एक एडीओ.NET कैननिकल कमांड पेड़ का उत्पादन करेगा। एसक्यूएल में इसका अनुवाद करने की प्रदाता की ज़िम्मेदारी है। यदि ईएफ सीसीटी में एक क्रॉस/बाहरी नोड लागू करता है, तो ऐसा लगता है कि देवर्ट को एसक्यूएल में इसका अनुवाद करने का कोई तरीका नहीं मिला है, जिसे MySQL संभाल सकता है। तो या तो MySQL सभी ईएफ प्रश्नों का समर्थन करने के काम पर नहीं है, या कोई भी जो MySQL विशेषज्ञ है (मुझे नहीं!) को देवता को दिखाने की ज़रूरत है कि MySQL- संगत एसक्यूएल कैसे उत्पन्न करें जो क्रॉस/बाहरी आवेदन के लिए पंक्तियों को ठीक से वापस कर सकता है सीसीटी नोड्स।

+0

क्षमा करें, क्रेग, आप गलत हैं। यह न तो कॉन्फ़िगरेशन त्रुटि, और न ही MySQL एफई प्रदाता में बग है के लिए +1 द्वारा समर्थित नहीं। – Devart

+0

कृपया लेख आप लिंक किए गए पढ़ें। इसमें कहा गया है ऐसी कोई बात नहीं। –

+2

यहां एक उद्धरण है: "कुछ मामलों में क्वेरी पाइपलाइन एक ट्रांजैक्ट-एसक्यूएल कथन उत्पन्न कर सकती है जिसमें क्रॉस लागू और/या बाहरी आवेदन ऑपरेटर शामिल हैं। चूंकि कुछ बैकएंड प्रदाता, SQL सर्वर 2005 से पहले SQL सर्वर के संस्करणों सहित, नहीं करते हैं इन ऑपरेटरों का समर्थन करें, ऐसे बैकएंड प्रदाताओं पर ऐसे प्रश्न निष्पादित नहीं किए जा सकते हैं। " यह पीटर का मामला है। हमने इस मुद्दे पर माइक्रोसॉफ्ट से संपर्क किया था और जवाब नकारात्मक था - यह कार्यक्षमता बदलना नहीं है। – Devart

3

यह एक इकाई फ्रेमवर्क आंतरिक वास्तुकला सुविधा है। कभी-कभी यह SQL सर्वर के अलावा प्रदाताओं द्वारा समर्थित क्वेरी उत्पन्न नहीं करता है। अधिक जानकारी here at MSDN उपलब्ध है।

+1

यह गलत है। आपके द्वारा लिंक किया गया आलेख वर्णन करता है "एनटीई फ्रेमवर्क डेटा ** ज्ञात समस्याएं SQL सर्वर (SQL क्लाइंट) के लिए प्रदाता, इकाई फ्रेमवर्क के लिए **।" (जोर जोड़ा गया।) साधारण तथ्य यह है कि ** सभी ** ईएफ में एसक्यूएल पीढ़ी प्रदाता द्वारा किया जाता है, * नहीं * ईएफ स्वयं। –

+0

तो सच क्या है? यदि प्रदाता एक एसक्यूएल उत्पन्न करता है, तो स्पष्ट रूप से आपके प्रदाता में MySQL पर एक बग है। फिर आप MySQL के साथ क्रॉस एप्लिकेशन या बाहरी एप्लिकेशन का उपयोग क्यों करते हैं? इस समस्या से बचने के लिए मुझे एक प्रश्न कैसे लिखना चाहिए? मुझे देवता कनेक्टर में कुछ सेट करना है? –

+3

एसक्यूएल ईएफ क्वेरी पाइपलाइन द्वारा दिए गए अभिव्यक्ति पेड़ से उत्पन्न होता है। यदि पेड़ में पहले से ही अतिरिक्त आवेदन है, तो प्रदाता में इसे छुटकारा पाने का कोई तरीका नहीं है। – Devart

संबंधित मुद्दे