2012-11-09 16 views
5

के साथ इंट 32 से ओरेकल नंबर (5) में कनवर्ट करें मैं एक ओरेकल 10 जी डेटाबेस के साथ ईएफ 4 (डेटाबेस पहले, मॉडल पूरी तरह से जेनरेट किया गया) का उपयोग कर रहा हूं और मुझे एक फ़ील्ड में समस्या है।ईएफ 4

मेरे क्षेत्र को मेरे डेटाबेस में NUMBER(5) के रूप में परिभाषित किया गया है। मेरे मॉडल में, ईएफ ने इसे short के रूप में परिभाषित किया है। मेरी समस्या यह है कि मेरे पास कुछ मान हैं जो 32,767 से अधिक (अधिकतम से कम) मुझे यह पोस्ट मिला: Entity Framework generates short instead of int। मैं निर्देश का पालन करता हूं और यह काम करता है, मेरे मॉडल में अब Int32 मान हैं।

Error 2019: Member Mapping specified is not valid. The type 'Edm.Int32[Nullable=True,DefaultValue=]' of member 'XX' in type 'Model.XXX' is not compatible with 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=5,Scale=0]' of member 'XX' in type 'Model.Store.XXX'. 

यह त्रुटि हमेशा दृश्य स्टूडियो की त्रुटि सूची टैब में दिखाई है:

लेकिन मैं एक नई समस्या है। हालांकि, निर्माण सफलता, और यह आधा काम करता है:

  • पढ़ डेटाबेस में एक मूल्य के काम करता है
  • एक मूल्य के बारे में काम नहीं करते: 99999 (संपादित देखना)

है -31,073 में तब्दील किया गया था यह एक समाधान है कि यह दोनों तरीकों से काम करता है?

बीटीडब्ल्यू, क्या ऑरैक INTEGER फ़ील्ड के लिए int32 का उपयोग करने के लिए इकाई को बताने का कोई तरीका है? यह डिफ़ॉल्ट रूप से दशमलव का उपयोग करें।

संपादित

चरण दर चरण debuging है, मैंने पाया क्यों मेरे मूल्य -31,073 था। मैं इस लाइन को भूल गया:

dao.Value = (short)dto.Value; 

मेरे दो मूल्य int थे, लेकिन संक्षेप में अंतर्निहित रूपांतरण मूल था।

+0

यह 'संख्या' के लिए' दशमलव' का उपयोग करता है क्योंकि संख्या _12.433242_ पूर्णांक उस मान को पकड़ सकता है। वैसे भी आपके प्रश्न के संबंध में, क्या आपने आधिकारिक उत्तर के लिए ओरेकल से संपर्क करने का प्रयास किया था? – gdoron

+0

क्या आपने ओरेकल 11 जी के लिए ओरेकल डेटा प्रदाता का उपयोग किया था? मैं ओरेकल 11 जी के लिए ओडीपी के साथ ईएफ 4 का उपयोग करता हूं और मुझे ऑरैकल इंटेगर के साथ कोई समस्या नहीं है। –

उत्तर

6

मुझे पता चला कि त्रुटि को कैसे निकाला जाए।

मैं एक्सएमएल मोड में edmx फ़ाइल संपादित, SSDL अनुभाग में मेरी क्षेत्र पाया:

<Property Name="SIT_INSEE" Type="number" Precision="5" /> 

मैं Precision="5" हटा दिया और चेतावनी गायब हो गया।

1

किसी और को समान समस्याएं होने पर बस मेरे दो सेंट जोड़ने के लिए। मैंने देखा है कि यदि आप web.config में मैपिंग में निम्नलिखित जोड़ते हैं और फिर एडीएमएक्स मॉडल को स्क्रैच से पुन: बनाते हैं (इसे हटाएं और डेटाबेस से पुन: उत्पन्न करें) यह इन मुद्दों में से कुछ को हल करता है। जहां web.config को मान जोड़ना कुछ भी हल नहीं हुआ है (शायद दृश्यों के पीछे कुछ कोड फिर से उत्पन्न करना मेरा अनुमान होगा)।

<oracle.dataaccess.client> 
    <settings> 
     <add name="int32" value="edmmapping number(9,0)" /> 
    </settings> 
    </oracle.dataaccess.client> 
संबंधित मुद्दे