首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SqlDateTime溢出的NHibernate

使用SqlDateTime溢出的NHibernate
EN

Stack Overflow用户
提问于 2014-03-08 17:15:58
回答 1查看 4K关注 0票数 2

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

App对象定义了一个属性:

代码语言:javascript
复制
public virtual DateTime ReleaseDate { get; set; }

在mappingClass中:

代码语言:javascript
复制
Map(x => x.ReleaseDate).Not.Nullable();

在2008年的sqlServer中,它的dataType是dateTime,不能为空。

这是第一次没有错误地保存到数据库。但是在更新应用程序信息之后,我遇到了SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

但是应用程序的发布日期是一个有效的dateTime:2/16/2014 2:21:58 AM,它不是null。

所以我搞不懂为什么这个例外会增加?

代码语言:javascript
复制
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);
                    }
                }

见截图:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-09 11:34:09

谢谢各位的有益评论。

问题是我从具有属性device的DB中获取了LastActivityDate对象。

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

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

所以这个对象在app对象的同一个会话中。当我刷新会话时,因为LastActivityDate为null,SqlDateTime异常出现了!

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22272462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档