【发布时间】:2010-12-09 17:00:34
【问题描述】:
我遇到了与这些问题类似的问题:
NHibernate 2.* mapping files: how to define nullable DateTime type (DateTime?)?
NHibernate won't persist DateTime SqlDateTime overflow
我正在使用 NHibernate 2.1.2 和 FluentNhibernate 1.0.0.636。在 NHibernate 2.x 中,可以为空的DateTime? 问题应该得到修复,我不必对我的映射做任何特别的事情。因此,我所有的 DateTime 属性都简单地设置如下:
public virtual DateTime? CreatedOn { get; set; }
在我的数据库 (SQL2008) 中,所有 DateTime 属性都设置为允许为空。我有我的 NHibernate 配置文件设置来使用 SQL2008 方言:
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
NHibernate 适用于不包含 DateTime 的任何内容。作为参考,这是我收到的确切错误:
> 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.
如果我运行 SQL Profiler,我可以看到 NHibernate 尝试执行的最后一个命令(这是一个很长的语句,所以我已经截断了它):
exec sp_executesql N'UPDATE Projects SET Job = @p0, CreatedOn = @p1, .. WHERE (Where Clause), @p0=219221, @p1=NULL
如果我将此语句作为查询执行,SQL 会很好地保持它,根本不会抱怨!
发生了什么事?
【问题讨论】:
标签: nhibernate fluent-nhibernate