estoy teniendo un problema similar a estas preguntas:NHibernate 2.1.2 tirar desbordamiento nula DateTime excepción
NHibernate 2.* mapping files: how to define nullable DateTime type (DateTime?)?
NHibernate won't persist DateTime SqlDateTime overflow
estoy usando NHibernate 2.1.2 y FluentNhibernate 1.0.0.636 . Con NHibernate 2.x se debe corregir el problema de anulación de nulos DateTime?
y no debería tener que hacer nada especial con mi asignación. En consecuencia, todas mis propiedades DateTime simplemente se establecen así:
public virtual DateTime? CreatedOn { get; set; }
En mi base de datos (SQL2008), todas las propiedades DateTime se establecen para permitir nula. Tengo mi configuración archivo de configuración de NHibernate para utilizar el dialecto SQL2008:
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
NHibernate funciona bien para cualquier cosa que no incluye un DateTime. Como referencia, aquí está el error exacto que estoy recibiendo:
> 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.
Si corro de SQL, puedo ver el último comando que NHibernate intenta ejecutar (esto fue una declaración muy largo, por lo que he truncado):
exec sp_executesql N'UPDATE Projects SET Job = @p0, CreatedOn = @p1, .. WHERE (Where Clause), @p0=219221, @p1=NULL
Si ejecuto esta declaración como una consulta SQL que persiste bien, no se queja en absoluto!
¿Qué está pasando?
A DateTime? funciona porque permite que DateTime sea nulo. Si una fecha y hora no es anulable (solo DateTime), se crea una instancia para el valor mínimo, que es 1/1/0001. –