gpt4 book ai didi

c# - 使用 NHibernate 的 SqlDateTime 溢出

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:55 25 4
gpt4 key购买 nike

我在数据库中使用 NHibernate 持久化我的对象

App 对象定义了一个属性:

public virtual DateTime ReleaseDate { get; set; }

在映射类中:

Map(x => x.ReleaseDate).Not.Nullable();

在 sqlServer 2008 中,它的数据类型是 dateTime 并且不可为空。

第一次没有错误地保存到数据库。但是在更新应用程序信息后,我遇到了 SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。

但应用发布日期是一个有效的日期时间:2/16/2014 2:21:58 AM 并且它不为空。

所以我很困惑为什么会引发这个异常?

ist<App> apps = session.QueryOver<Data.Model.App>()
.List()
.ToList();
.
.
.
.
for (int i = 0; i < apps.Count(); i++)
{
App appWithOldInfo = apps[i];

using (ITransaction transaction = session.BeginTransaction())
{
try
{
//updating app info
appWithOldInfo = UpdateAppInfo(appWithOldInfo, appWithNewInfo);

session.Update(appWithOldInfo);
transaction.Commit();
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}

看截图: enter image description here enter image description here enter image description here

最佳答案

感谢大家提出有用的意见。

问题是我正在获取 device来自 DB 的对象具有属性 LastActivityDate

List<Device> devices = session.QueryOver<Data.Model.Device>().List().ToList();

我在将带有一些信息的设备对象添加到数据库后将此属性添加到模型中。此属性为空,但我没有将 LastActivityDate 定义为可为空的属性。

所以这个对象在应用程序对象的同一个 session 中。当我刷新 session 时,因为 LastActivityDate为空,出现 SqlDateTime 异常!

很简单。但我花了几个小时才找到它!!

关于c# - 使用 NHibernate 的 SqlDateTime 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22272462/

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