我在数据库中使用NHibernate来保存我的对象
App
对象定义了一个属性:
public virtual DateTime ReleaseDate { get; set; }
:
Map(x => x.ReleaseDate).Not.Nullable();
在sqlServer 2008中,其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。
所以我很困惑为什么这个异常会引发?
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);
}
}
查看截图:
答案 0 :(得分:2)
感谢各位有用的评论。
问题我从数据库获取device
对象有一个属性LastActivityDate
List<Device> devices = session.QueryOver<Data.Model.Device>().List().ToList();
在将带有一些信息的设备对象添加到数据库之后,我已将此属性添加到模型中。 这个属性为null,但我没有将LastActivityDate定义为可以为空的属性。
所以这个对象在app对象的同一个会话中。当我刷新会话时,因为LastActivityDate
为空,SqlDateTime异常升级了!