sql >> Database >  >> RDS >> Sqlserver

Vloeiende NHibernate-problemen met SQL Server 2008 DATE-kolomwaarden

Sorry, ik realiseer me net dat ik dit als antwoord op de vraag moet posten in plaats van alleen commentaar te geven... Lach alsjeblieft niet om de "nieuwe man!"

Na verdere discussies en tests lijkt het erop dat dit probleem verband houdt met het gebruik door ADO.NET en NHibernate van de DbType.Date voor MS SQL 2008-kolommen van het datatype DATE. Als de code SqlDbType.Date zou gebruiken in plaats van DbType.Date, zouden dergelijke problemen niet optreden en zou alles werken zoals gespecificeerd.

Hoewel het gebruik van DbType.Date misschien "draagbaarder" lijkt voor andere databasetypen, introduceert het dit probleem, aangezien de ADO.NET DbType.Date de beperking heeft van een minimumwaarde van 1/1/1753.

Een tijdelijke oplossing voor dit probleem is om NHibernate te vertellen dat het type van de kolom een ​​DATETIME2 is, die ook datumwaarden ondersteunt die eerder zijn dan 1/1/1753. Als de NHibernate-toewijzing is:

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

De code presteert zoals verwacht zonder uitzonderingen.

Het is jammer dat NHibernate niet herkent dat het het MsSql2008-dialect gebruikt en de SqlDbTypes gebruikt in plaats van de DbTypes, maar deze tijdelijke oplossing lijkt voorlopig te werken.

Voor meer informatie over de ADO.NET-aspecten, zie ADO.NET Min-waarde invoegen in SQL Server 2008 Datum-kolom crasht . Met dank aan @Graham Bunce voor zijn hulp hierbij.

Ik hoop dat deze informatie iedereen helpt die in de toekomst tegen dit probleem aanloopt.



  1. psycopg2-equivalent van mysqldb.escape_string?

  2. Hoe de eerste letter van een record in SQL met een hoofdletter te schrijven

  3. Symfony2:Lijst met steden per land

  4. Kan een nummer worden gebruikt om een ​​MySQL-tabelkolom een ​​naam te geven?