保存到數據庫時,我有一種情況,其中十進制字段被截斷爲小數點後五位。即使我已經用小數點後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的映射工作,這導致我相信這是一個與流利的問題。對於其他我可能錯過的任何建議?
感謝, 跳過
如果使用小數而不是空數,會發生嗎? –
Firo
2012-04-26 09:51:58
@Firo - 與不可爲空的小數相同的問題。 – SkipHarris 2012-04-26 14:19:16
那麼看到差異的唯一方法就是輸出FNH生成新的PersistanceModel(); model.Add(new Class1Map()); model.Write(Console.Out);' – Firo 2012-04-26 14:40:06