हम मौजूदा डेटाबेस संग्रहीत कि दशमलव उत्पादन देता है नीचे एक के समान प्रक्रिया का उपयोग कर रहे हैं में पूर्णांक के लिए गोल, नीचेदशमलव उत्पादन पैरामीटर EF5.0
CREATE PROCEDURE spTest(@a int, @b decimal(18,2) output)
as
BEGIN
SELECT @b=23.22
SELECT * FROM <TABLE> where id = @a
END
जब मैं सी # अनुप्रयोग में में संग्रहीत प्रक्रिया कॉल (कोड) मैं 23 के बजाय 23,22
ObjectParameter b = new ObjectParameter("b", typeof(System.Decimal))
var result = myentities.context.spTest(1234, b)
यह बिल्कुल वैसा ही मुद्दा इमरे होर्वाथ (http://social.msdn.microsoft.com/Forums/en-US/14bdde82-c084-44dd-ad83-c1305cb966d2/decimal-output-parameter-rounded-to-integer द्वारा पोस्ट की गई के रूप में उत्पादन पैरामीटर के लिए परिणाम मिलता है), लेकिन अंतर हम एसक्यूएल सर्वर 2008 और इकाई की रूपरेखा 5.0 का उपयोग कर रहे है। सुझाव अपने पद से मैं एक्सएमएल संपादक में edmx फ़ाइल खोला और उत्पादन पैरामीटर के रूप में नीचे @b के लिए निम्नलिखित पर ध्यान दिया है,
<Parameter Name="b" Type="decimal" Mode="InOut"/>;
पढ़ने के बाद मैं इसे
<Parameter Name="b" Type="decimal" Mode="InOut" Precision="18" Scale="2"/>;
और चलाने के लिए बदल गया आवेदन और मुझे अपेक्षित परिणाम मिला (23.22)
यह एक काम है लेकिन समाधान नहीं है क्योंकि आप जानते हैं कि जब हम इकाई फ्रेमवर्क डिजाइनर में संग्रहीत प्रक्रिया को अपडेट करते हैं तो परिवर्तन खो जाएंगे। हमारे डेटाबेस में हमारे पास बहुत सारी संग्रहीत प्रक्रिया है जिसमें आउटपुट पैरामीटर के रूप में दशमलव (18,2) है। मैं सोच रहा हूं कि यह अभी भी इकाई ढांचे 5.0 में एक मुद्दा है। आपकी मदद की बहुत सराहना की जाएगी।
कुमार