1

我有一个使用 nhibernate 和 fluent-nhibernate 的应用程序。我们使用的是 SQL Server 2008,我有一个带有浮点列的表,因为我们没有固定的精度,用户可以设置任意数量的小数位(1、10、25 位小数等)。我使用 fluent-nhibernate 像这样映射它:

Map(x => x.Factor).Column("FACTOR").Not.Nullable();

我也试过:

Map(x => x.Factor).Column("FACTOR").Precision(53).Not.Nullable();

还有这个:

Map(x => x.Factor).Column("FACTOR").CustomSqlType("float").Not.Nullable();

它不起作用。看我的数据库截图:

在此处输入图像描述

字段因子是我的浮点列,最后一个注册表有数字1,234567891,当 nhibernate 对数据库进行查询时,它在 C# 中带有1,123456788,C# 正在四舍五入该值。我们需要原始值。

我怎样才能让它工作?

4

1 回答 1

1

是的,在数据​​库中使用十进制,浮点数会出现您一直遇到的舍入问题。在域类中也使用十进制,因为浮点/双精度都存在相同的舍入问题。

地图使用:

Map(x => x.Factor).Column("FACTOR").CustomSqlType("decimal(p,s)").Not.Nullable();

这应该转换为sql server 中的小数

于 2013-07-24T07:52:31.447 回答