Эта статья описывает мою проблему. У меня есть несколько свойств, которые рассчитываются. Они напечатаны как десятичные (9,2) в SQL Server и десятичные в моих классах C #. Пример проблемы:
- Объект загружен со значением свойства 14,9
- Выполнен расчет, и значение свойства изменено на 14,90393
- Когда сеанс сбрасывается, NHibernate выдает обновление, потому что свойство грязное
- Поскольку поле базы данных является десятичным (9,2), сохраненное значение не изменяется
Обычно фантомное обновление выдается при каждой загрузке этого объекта. Я не хочу урезать вычисления в моих бизнес-объектах, потому что это тесно связывает их с базой данных, и я не хочу терять точность в других вычислениях. Я попытался установить масштаб и точность или CustomType ("Decimal (9,2)") в файле сопоставления, но, похоже, это влияет только на генерацию схемы.
Единственным разумным вариантом, по-видимому, является создание реализации IUserType для этого. Есть ли лучшее решение?