2011-03-09 15 views
7

सभी,NHibernate 3.0 दशमलव को 5 दशमलव स्थानों पर गोल करना - क्यों?

हम एनएचबेरेट 2.1 का उपयोग कर रहे थे जहां हम दशमलव मान (विनिमय दर) को संग्रहीत कर रहे हैं उदा। 123.1234567 से 7 दशमलव स्थानों

हम प्रकार डिफ़ॉल्ट मानचित्रण शैली का उपयोग मानचित्रण कर रहे हैं:

<property name="ExchangeRate" not-null="true" /> 

लेकिन जब हम NHibernate 3.0 मूल्य से ऊपर १२३.१२३४५०० रूप में सहेजा जाता में अपग्रेड करें।

यह हालांकि यह विस्तार प्रतीत होता है 3.0 रिलीज नोट्स में व्यवहार में इस बदलाव को निर्दिष्ट नहीं करता कि इस मुद्दे को [एनएच 1594] में, दशमलव के लिए डिफ़ॉल्ट मान दशमलव है (19,5)

हम एक समाधान यानी निम्नलिखित मैपिंग निर्दिष्ट करें:

<property name="ExchangeRate" type="decimal(10,7) not-null="true" /> 

मुझे यह समाधान पता होना चाहिए कि इस समाधान को हल करने का सही तरीका है? इसके अलावा, 2.1 और 3.0 के बीच गोलाकार व्यवहार में एक कार्यात्मक परिवर्तन क्यों है?

चीयर्स,

बिली ढेर

+0

क्या आप वाकई डेटाबेस डिज़ाइन की वजह से नहीं हैं? 3.0 का प्रयास करते समय आप एक ही डेटाबेस स्कीमा का उपयोग कर रहे हैं? – jishi

+0

क्षमा करें, यह टाइप = "दशमलव (14,7) – bstack

+0

हां, सटीक उसी डेटाबेस डिज़ाइन होना चाहिए। अगर मैं एनएचबर्ननेट के पुराने संस्करण पर वापस आ जाता हूं, तो समस्या मौजूद नहीं है। – bstack

उत्तर

9

काम करता है यही कारण है कि है, लेकिन इस क्लीनर IMO है:

<property name="ExchangeRate" precision="10" scale="7" /> 

एक नहीं-शून्य दशमलव संपत्ति प्रकार से निहित है।

+0

मैं अन्य तरीका बनना पसंद करूंगा ईमानदार। हालांकि सुझाव के लिए धन्यवाद। – bstack

+0

मेरा सवाल यह है कि यह एनएच 3 में डिफ़ॉल्ट रूप से 5 दशमलव स्थानों तक क्यों घूम रहा है, जबकि यह NH2.1 में ऐसा नहीं किया ... – bstack

+2

@bstack यह आपके जैसा प्रश्न है निबर्ननेट-विकास सूची में पूछ सकते हैं। वैसे भी, सटीक संख्यात्मक प्रकार निर्धारक होना चाहिए, इसलिए एक अनियंत्रित डिफ़ॉल्ट पर विश्वास करने के लिए स्पष्ट होना बेहतर है। –

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