Переполнение SqlDateTime при использовании NHibernate
Я сохраняю свои объекты, используя NHibernate в базе данных
App
У объекта есть свойство, определенное:
public virtual DateTime ReleaseDate { get; set; }
в mappingClass:
Map(x => x.ReleaseDate).Not.Nullable();
который в SQL Server 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
и это не ноль.
поэтому я запутался, почему это исключение повышают?
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);
}
}
увидеть скриншоты:
1 ответ
Спасибо, ребята, за ваши полезные комментарии.
Проблема была в том, что я брал device
объект из БД, который имеет свойство LastActivityDate
List<Device> devices = session.QueryOver<Data.Model.Device>().List().ToList();
Я добавил это свойство в модель после добавления объекта устройства с некоторой информацией в БД. это свойство было нулевым, но я не определил LastActivityDate как обнуляемое свойство.
таким образом, этот объект находился в том же сеансе объекта приложения. когда я сбросил сессию, потому что LastActivityDate
был нулевым, исключение SqlDateTime увеличилось!
это просто. но я трачу часы, чтобы найти его!!