У нас был случай с похожими симптомами, возможно, причины тоже схожи.
На БД у нас был столбец с плавающей точкой, который допускал нулевые значения. Однако соответствующий класс сущности не пометил поле, сопоставленное этому столбцу, как Nullable.
Обратите внимание, что мы используем стратегию Transaction-per-Request. Поэтому, когда мы зафиксировали транзакцию, nhibernate обновил все объекты, к которым был получен доступ, значением 0, где оно было нулевым.
Может быть, есть такая разница между вашей БД и отображаемыми объектами?