NHibernate 3.0 с округлением до десятичного знака после запятой - почему? - PullRequest
7 голосов
/ 09 марта 2011

All

Мы использовали NHiberate 2.1, где мы храним десятичные значения (курсы обмена), например. 123.1234567 до 7 знаков после запятой

Мы отображаем тип, используя стиль отображения по умолчанию:

<property name="ExchangeRate"  not-null="true" />

Однако при обновлении до NHibernate 3.0 указанное выше значение сохраняется как 123.1234500.

Он не определяет это изменение в поведении в примечаниях к выпуску 3.0, хотя, похоже, он подробно описывает, что в выпуске [NH-1594] значение по умолчанию для десятичной дроби - DECIMAL (19,5)

У нас есть решение, т.е. укажите следующее отображение:

<property name="ExchangeRate"  type="decimal(10,7) not-null="true" />

Мне нужно знать, является ли это решение правильным способом решения этой проблемы? Кроме того, почему происходит функциональное изменение поведения с округлением между 2,1 и 3,0?

Приветствия

Билли Стэк

Ответы [ 2 ]

10 голосов
/ 09 марта 2011

Это работает, но это чище ИМО:

<property name="ExchangeRate" precision="10" scale="7" />

Тип свойства, не равный нулю, подразумевается типом свойства.

0 голосов
/ 27 декабря 2018

Это решение, к сожалению, не работает, если вам нужно указать значение по умолчанию, которое можно установить только для тега столбца.

<property name="Price" precision="25" scale="8" not-null="true">
  <column name="Price" default="1"/>
</property>

Вы должны переместить все в тег столбца, чтобы он работал.

<property name="Price">
  <column name="Price" default="1" precision="25" scale="8" not-null="true"/>
</property>
...