2013-08-10 6 views
6

हम मौजूदा डेटाबेस संग्रहीत कि दशमलव उत्पादन देता है नीचे एक के समान प्रक्रिया का उपयोग कर रहे हैं में पूर्णांक के लिए गोल, नीचेदशमलव उत्पादन पैरामीटर 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 में एक मुद्दा है। आपकी मदद की बहुत सराहना की जाएगी।

कुमार

उत्तर

2

एफई 5.0 में यह शायद 6.0 में तय नहीं किया जाएगा नहीं, यह निश्चित नहीं है या तो।

अद्यतन:
मैं हाल ही में एफई 6.0 पर अपडेट कर लिया है, और कोई, समस्या अभी भी तय नहीं है। मुझे लगता है कि ईएफ 6.0 अब Open Source है, इसलिए यदि आप उस तरह की चीज में हैं तो आप इसे हमेशा अपने आप पकड़ सकते हैं।

3

ईएफ 6 में, मुझे एक ही समस्या मिली! लेकिन एक आसान समाधान खोजें। मैं उत्पादन ObjectParameter मूल्य, तो, जैसे 5602,86

public decimal GetQuotationAmount(string rec_id, decimal price) 
{ 
    ObjectParameter qTA_AMT = new ObjectParameter("QTA_AMT", typeof(decimal)); 
    qTA_AMT.Value = 100000.00m; 
    db.GRP_Calc_QuotationAmount(rec_id, price,qTA_AMT); 
    return Convert.ToDecimal(qTA_AMT.Value); 
} 
8

मैं तुम्हारे साथ एक ही मुद्दा मिल गया स्थापित करने के लिए पैमाने के साथ दशमलव लौट कोशिश करते हैं और बाद मैं इस लेख http://tiku.io/questions/1120572/decimal-output-parameter-rounded-to-integer-in-ef5-0

से संदर्भित मैं इसे हल कर ली है इस समस्या को हल करने के लिए 3 कदम हैं:

  1. edmx फ़ाइल => के साथ खोलें ... => एक्सएमएल (टेक्स्ट) संपादक के साथ खोलें।
  2. खोज पाठ <Parameter Name="b" Type="numeric" Mode="InOut" /> तो <Parameter Name="b" Type="numeric" Mode="InOut" Precision="20" Scale="2" />
  3. खोज लेख के बदलने <Parameter Name="b" Mode="InOut" Type="Decimal" /> तब तक <Parameter Name="b" Mode="InOut" Type="Decimal" Precision="20" Scale="2" />

आशा इस मदद मिलेगी इसे बदलना!

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