我有一个案例,当保存到数据库时,十进制字段被截断到小数点后五位。即使我以小数点后 10 位的精度映射它们,也会发生这种情况。
我在 SQL Server 2008 中使用 NHibernate 3.2.0.4000 和 FluentNHibernate 1.3.0.717。
这是我的 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"/>
我已经删除了十进制字段的所有约定,但仍然存在问题。
由于基于 XML 的映射有效,这让我相信这是 Fluent 的问题。关于我可能错过的其他事情的任何建议?
谢谢,跳过