NHibernate 2.1.2引发DateTime空溢出异常

NHibernate 2.1.2引发DateTime空溢出异常,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我对这些问题也有类似的问题: 我使用的是NHibernate 2.1.2和FluentNhibernate 1.0.0.636。使用NHibernate2.x,可以为null的DateTime?问题应该得到修复,我不必对映射做任何特殊的处理。因此,所有my DateTime属性的设置如下: public virtual DateTime? CreatedOn { get; set; } 在我的数据库(SQL2008)中,所有DateTime属性都设置为允许null。我的NHibernate

我对这些问题也有类似的问题:

我使用的是NHibernate 2.1.2和FluentNhibernate 1.0.0.636。使用NHibernate2.x,可以为null的
DateTime?
问题应该得到修复,我不必对映射做任何特殊的处理。因此,所有my DateTime属性的设置如下:

public virtual DateTime? CreatedOn { get; set; }
在我的数据库(SQL2008)中,所有DateTime属性都设置为允许null。我的NHibernate配置文件设置为使用SQL2008方言:

<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
如果我将此语句作为查询执行,SQL会很好地保持它,一点也不抱怨


发生了什么事?

您的DateTime属性可能设置为DateTime.MinValue(1/1/0001),而不是null或DateTime列的有效范围内的值。

我不知道为什么,但这是有效的。与链接中的示例不同,我的是
DateTime?
so。。。。我不知道它为什么有效,但它确实有效。

我也有同样的问题。起初,我认为我通过将sql类型从可为空的日期切换到可为空的日期时间来修复它。然而,这只是海市蜃楼。根本原因是对另一个新添加的表的级联更新


如果每个人(尤其是MS)都抛出更多的描述性错误,这个问题就会很快得到解决。生活就是这样

约会时间?之所以有效,是因为它允许DateTime为null。如果日期时间不可为null(仅为DateTime),它将被实例化为最小值,即1/1/0001。
> 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.
exec sp_executesql N'UPDATE Projects SET Job = @p0, CreatedOn = @p1, .. WHERE (Where Clause), @p0=219221, @p1=NULL