ich auf diese Fragen ein ähnliches Problem mit:NHibernate 2.1.2 werfen Datetime null Überlauf Ausnahme
NHibernate 2.* mapping files: how to define nullable DateTime type (DateTime?)?
NHibernate won't persist DateTime SqlDateTime overflow
Ich verwende NHibernate 2.1.2 und FluentNHibernate 1.0.0.636 . Mit NHibernate 2.x sollte das NULL-fähige DateTime?
Problem behoben werden und ich sollte nichts spezielles mit meinem Mapping tun müssen. Dementsprechend sind alle meine Datetime-Eigenschaften sind einfach wie so gesetzt:
public virtual DateTime? CreatedOn { get; set; }
In meiner Datenbank (SQL2008), alle Datetime-Eigenschaften werden auf null zulassen. Ich habe mein Setup NHibernate-Konfigurationsdatei den SQL2008 Dialekt zu verwenden:
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
NHibernate arbeitet für alles in Ordnung, die keine Datetime enthält. Ich erhalte als Referenz, hier ist die genaue Fehler:
> at
> NHibernate.AdoNet.SqlClientSqlCommandSet.ExecuteNonQuery()</StackTrace><ExceptionString>System.Data.SqlTypes.SqlTypeException:
> SqlDateTime overflow. Must be between
> 1/1/1753 12:00:00 AM and 12/31/9999
> 11:59:59 PM.
Wenn ich SQL Profiler ausgeführt wird, kann ich den letzten Befehl sehen, die NHibernate auszuführen versucht, (dies war eine sehr lange Erklärung, also habe ich sie abgeschnitten):
Wenn ich diese Anweisung als eine Abfrage ausführen, beharrt SQL in Ordnung, beschwert sich überhaupt nicht!
Was ist los?
Ein Datetime? funktioniert, weil die DateTime auf null gesetzt werden kann. Wenn eine Datum-Uhrzeit nicht-Nullable ist (nur DateTime), wird sie in den Min-Wert instanziiert, der 1/1/0001 ist. –