INSERT INTO [Location]
(Name,
Lat,
Lon)
VALUES ('my address' /* @p0 */,
-58.37538459999996 /* @p1 */,
-34.5969468 /* @p2 */);
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](255) NULL,
[Lat] [decimal](23, 20) NULL,
[Lon] [decimal](23, 20) NULL,
但是当我在sqlserver管理工作室看到插入的数据时,我可以看到它被插入
-58.37538000000000000000而不是-58.37538459999996000000和
-34.59694000000000000000而不是-34.59694680000000000000。
当我手动执行此插入查询时,它会正确插入值(Lat列的14位小数),但如果nhibernate执行此操作,则只插入5位小数。
任何想法???
答案 0 :(得分:4)
问题来自默认precision
和scale
。 NHibernate默认decimal
表示为decimal (28,5)
,这就是为什么最终的INSERT语句只包含5个小数位。 XML映射
<property name="Lat" precision="23" scale="20" />
<property name="Lon" precision="23" scale="20" />
流利:
...
.Precision(23)
.Scale(20)
现在INSERT语句将是decimal (23,20)
。