Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर 2008 दिनांक कॉलम मानों के साथ धाराप्रवाह NHibernate समस्याएं

क्षमा करें, बस एहसास हुआ कि मुझे इसे केवल टिप्पणी करने के बजाय प्रश्न के उत्तर के रूप में पोस्ट करना चाहिए... कृपया "नए लड़के!" पर हंसें नहीं।

आगे की चर्चाओं और परीक्षण के माध्यम से, ऐसा लगता है कि यह समस्या ADO.NET और NHibernate के DbType.Date के उपयोग से संबंधित है। MS SQL 2008 के डेटाटाइप DATE के कॉलम। यदि कोड DbType.Date के बजाय SqlDbType.Date का उपयोग कर रहा था, तो ऐसी कोई समस्या नहीं होगी और सब कुछ निर्दिष्ट के अनुसार प्रदर्शन करेगा।

जबकि DbType.Date का उपयोग अन्य डेटाबेस प्रकारों के लिए अधिक "पोर्टेबल" लग सकता है, यह इस समस्या को पेश करता है, क्योंकि ADO.NET DbType.Date में न्यूनतम मान 1/1/1753 का प्रतिबंध है।

इस समस्या का समाधान NHibernate को बताना है कि कॉलम का प्रकार DATETIME2 है, जो 1/1/1753 से पहले के दिनांक मानों का भी समर्थन करता है। यदि NHibernate मैपिंग है:

<property name="TestDate" type="datetime2">
  <column name="TestDate" sql-type="date" />
</property>

कोड बिना किसी अपवाद के अपेक्षानुसार प्रदर्शन करता है।

यह बहुत बुरा है NHibernate यह नहीं पहचानता कि यह MsSql2008 बोली का उपयोग कर रहा है और DbTypes के बजाय SqlDbTypes का उपयोग करता है, लेकिन यह समाधान अभी के लिए काम करता प्रतीत होता है।

ADO.NET पहलुओं पर अधिक जानकारी के लिए, देखें ADO.NET SQL सर्वर 2008 दिनांक कॉलम क्रैश में न्यूनतम मान सम्मिलित करें . इसमें मदद के लिए @Graham Bunce को धन्यवाद।

मुझे आशा है कि यह जानकारी भविष्य में इस समस्या में आने वाले किसी भी व्यक्ति की सहायता करेगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस संलग्न करते समय प्रवेश निषेध है

  2. SQL सर्वर प्रबंधन स्टूडियो में तालिका में मानों को त्वरित रूप से कैसे संपादित करें?

  3. क्या हमारे पास एक विदेशी कुंजी हो सकती है जो किसी अन्य तालिका में प्राथमिक कुंजी नहीं है?

  4. डेटाबेस से सभी कनेक्शनों को समाप्त करने के लिए स्क्रिप्ट (RESTRICTED_USER ROLLBACK से अधिक)

  5. SQL सर्वर (T-SQL) में किसी क्वेरी के परिणाम ईमेल कैसे करें