我使用NHibernate在数据库中持久化对象
App对象定义了一个属性:
public virtual DateTime ReleaseDate { get; set; }在mappingClass中:
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。
所以我搞不懂为什么这个例外会增加?
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);
}
}见截图:



发布于 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异常出现了!
这很简单。但我花了好几个小时才找到它!!
https://stackoverflow.com/questions/22272462
复制相似问题