EF उन संग्रहीत कार्यविधियों को आयात करने का समर्थन नहीं करता है जो निम्न से परिणाम सेट करते हैं:
- गतिशील प्रश्न
- अस्थायी टेबल
इसका कारण यह है कि प्रक्रिया को आयात करने के लिए EF को इसे निष्पादित करना होगा . ऐसा ऑपरेशन खतरनाक हो सकता है क्योंकि यह डेटाबेस में कुछ बदलावों को ट्रिगर कर सकता है। इसके कारण EF संग्रहित प्रक्रिया को निष्पादित करने से पहले विशेष SQL कमांड का उपयोग करता है:
SET FMTONLY ON
इस कमांड को निष्पादित करने से संग्रहीत कार्यविधि अपने परिणाम सेट में कॉलम के बारे में केवल "मेटाडेटा" लौटाएगी और यह अपने तर्क को निष्पादित नहीं करेगी। लेकिन चूंकि तर्क निष्पादित नहीं किया गया था, इसलिए कोई अस्थायी तालिका (या निर्मित गतिशील क्वेरी) नहीं है, इसलिए मेटाडेटा में कुछ भी नहीं है।
आपके पास दो विकल्प हैं (एक को छोड़कर जिसके लिए इन सुविधाओं का उपयोग न करने के लिए आपकी संग्रहीत कार्यविधि को फिर से लिखना आवश्यक है):
- दिए गए जटिल प्रकार को मैन्युअल रूप से परिभाषित करें (मुझे लगता है कि इसे काम करना चाहिए)
- हैक का उपयोग करें और इसकी शुरुआत में रखी गई संग्रहीत प्रक्रिया को जोड़ने के लिए
SET FMTONLY OFF
. यह आपके एसपी के बाकी कोड को सामान्य तरीके से निष्पादित करने की अनुमति देगा। बस सुनिश्चित करें कि आपका एसपी किसी भी डेटा को संशोधित नहीं करता है क्योंकि इन संशोधनों को आयात के दौरान निष्पादित किया जाएगा! सफल आयात के बाद उस हैक को हटा दें।