gpt4 book ai didi

NHibernate Profiler 在骗我?

转载 作者:行者123 更新时间:2023-12-03 17:05:58 25 4
gpt4 key购买 nike

我使用 Fluent NHibernate 作为我的 ORM,当我执行它时,NH Profiler 向我抛出这个 sql 查询

INSERT INTO [Location]
(Name,
Lat,
Lon)
VALUES ('my address' /* @p0 */,
-58.37538459999996 /* @p1 */,
-34.5969468 /* @p2 */);

顺便说一下,这是绝对正确的。这是我的 Location 表的设计:

[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](255) NULL,
[Lat] [decimal](23, 20) NULL,
[Lon] [decimal](23, 20) NULL,

但是在sqlserver management studio中看到inserted的数据时,是可以看到inserted的

-58.37538000000000000000 而不是 -58.37538459999996000000 和

-34.59694000000000000000 而不是 -34.59694680000000000000。

当我手动执行此插入查询时,它会正确插入值(Lat 列的 14 位小数),但如果 nhibernate 这样做,它只会插入 5 位小数。

有什么想法吗???

最佳答案

默认的 precisionscale 存在问题。 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)

关于NHibernate Profiler 在骗我?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com