c# - LINQ to SQL DataContext "String must be exactly one character long." -


मैं एक संग्रहीत कार्यविधि को एक वेब सेवा कनेक्शन में उपयोग कर रहा हूं LINQ से SQL द्वारा जब मैं मैन्युअल रूप से मेरी संग्रहीत कार्यविधि निष्पादित करता हूं, तो मैं देखता हूं कि यह मेरे पास कॉलम वापस करता है, लेकिन जब मैं अपने वेब सेवा को LINQ से SQL का उपयोग करने की कोशिश करता / करता हूं> मुझे "code" मिलता है

संग्रहीत प्रक्रिया चार मापदंडों की उम्मीद है

कोड>: char (12) , varchar (3) , int , varchar (3) आउटपुट

जब मैं करता हूँ: exec spName '123456789012', '123', '1', ''

मुझे सही कॉलम मिल गया (एसक्यूएल में) सर्वर 2012), हालांकि जब मैं इसे अपने वेब सेवा से निम्न कोड से कॉल करता हूं:

  string str1 = "123456789012"; स्ट्रिंग str2 = "123"; int? Int1 = 1; स्ट्रिंग str3 = String.Empty; SpNameResult परिणाम = context.spName (str1, str2, int1, रेफरी स्ट्र्ज़)। फर्स्टऑर डीफॉल्ट & lt; spNameResult & gt; ();  

यह स्ट्रिंग की ज़रूरत की त्रुटि को एक अक्षर के बराबर होने के लिए फेंकता है।

तो, मैं अपने प्रश्न पर आती हूं: लेकिन एक ही पैरामीटर के साथ वेब सर्विस कॉल नहीं है और मैं इसका समाधान कैसे कर सकता हूं?

आपके उदाहरण में, तीसरे पैरामीटर को apostrophes में दिया गया है - जैसे कि varchar (और नहीं int) था सी # उदाहरण में तीसरे पैरामीटर के लिए int प्रकार है। कृपया अपनी संग्रहीत कार्यविधि परिभाषा और सी # जनरेटेड कक्षाओं की समीक्षा करें। शायद तीसरा पैरामीटर में प्रकार गड़बड़ी है एक्सेक का काम करता है क्योंकि SQL सर्वर INT और VARCHAR प्रकार के मापदंडों को डाला सकता है।

एसक्यूएल क्वेरी को पकड़ने के लिए एसक्यूएल प्रोफाइलर का भी उपयोग करें। मुझे लगता है कि LINQ पैरामीटर के साथ SQL क्वेरी बनाता है और प्रत्यक्ष तर्क नहीं।


Comments

Popular posts from this blog

eclipse plugin - Run java code error: Workspace is closed -

ios - How do I use CFArrayRef in Swift? -

scala - Play Framework - how to bind form to a session field -