У меня есть случай, когда десятичные поля усекаются до пяти десятичных знаков при сохранении в базе данных. Это происходит даже при том, что я сопоставил их с точностью 10 мест после десятичного числа.Десятичные поля, усеченные с NHibernate 3.2 и FluentNHibernate 1.3
Я использую NHibernate 3.2.0.4000 и FluentNHibernate 1.3.0.717 с SQL Server 2008.
Вот мой C# свойство:
public virtual decimal? MyDecimalField { get; set; }
Я пытался делать в авто отображение переопределение:
mapping.Map(x => x.MyDecimalField).Precision(28).Scale(10);
Я также попытался сделать явное отображение поля:
Map(x => x.MyDecimalField).Precision(28).Scale(10);
При выполнении экспорта схемы, таблица будет создаваться правильно:
create table MyTable (
Id UNIQUEIDENTIFIER not null,
MyDecimalField DECIMAL(28, 10) null,
primary key (Id)
)
Используя значение 5.1234567890, вот фрагменты параметров из генерируемого обновления заявления SQL:
@p31 decimal(28,5)
@p31=5.12345
Я чтобы сделать эту работу корректной, если я использую XML-сопоставление:
<property name="Decimal01" precision="28" scale="10"/>
Я удалил все conventi ons для десятичных полей и все еще есть проблема.
Поскольку работа на основе XML основана, это заставляет меня думать, что это проблема с Fluent. Любые предложения о чем-то еще, что я, возможно, пропустил?
Спасибо, Пропустить
это происходит, если вы используете десятичное значение вместо нулевого? –
Firo
@Firo - та же проблема с десятичной точкой с нулевым значением. – SkipHarris
, тогда единственный способ увидеть разницу - вывести то, что FNH генерирует 'new PersistanceModel(); model.Add (новый Class1Map()); model.Write (Console.Out); ' – Firo