gpt4 book ai didi

NHibernate 2.1.2 抛出 DateTime 空溢出异常

转载 作者:行者123 更新时间:2023-12-03 10:01:26 24 4
gpt4 key购买 nike

我遇到了与这些问题类似的问题:

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 会很好地坚持它,根本不会提示!

这是怎么回事?

最佳答案

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

关于NHibernate 2.1.2 抛出 DateTime 空溢出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4400971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com