Я с волнением прочитал первую попавшуюся статью в гугле — это была как раз моя проблема. У меня есть объектная модель с ненулевым полем даты, но базовое поле базы данных допускало значение NULL и имело нулевое значение. Это был DateTime. nHibernate установил значение .Net Date.MinValue, а затем попытался сохранить его обратно, что привело к ошибке.
Решение в статье: Просто используйте «DateTime?» в доменной модели.
Это не сработает для нас.
Вот в чем дело: мы проводим серьезный рефакторинг, который включает миграцию данных из одной схемы в другую, переход от ADO к nHibernate и т. д., сложные вещи. Итог: объектная модель верна как есть, это НЕ значение DateTime, допускающее значение NULL («CreatedDate»). Установить его на DateTime? технически будет работать, но это неправильно доменно. Чего я ДЕЙСТВИТЕЛЬНО хочу, так это того, чтобы nHibernate перестал быть таким полезным и просто выдавал ошибку, когда он сталкивается с попыткой загрузить нулевое значение DateTime в ненулевой объект домена. Я считаю, что это поможет нам гораздо быстрее выявить эти проблемы.
Я знаю, что nHibernate легко настраивается/сопоставляется... есть ли способ добиться такого поведения и как лучше всего это сделать...?
Заранее благодарю за любую помощь!