NHibernate 数字格式问题 - 我在哪里设置文化?

Posted

技术标签:

【中文标题】NHibernate 数字格式问题 - 我在哪里设置文化?【英文标题】:NHibernate number format problem - where do I set the culture? 【发布时间】:2010-01-14 11:09:58 【问题描述】:

稍后编辑:是我 :( 这是一个不可为空的列,未填充。对不起,我感到困惑的每个人..

我在使用 NHibernate 生成的 INSERT 语句时遇到问题,因为它使用区域设置格式化十进制数。生成的语句类似于:

exec sp_executesql N'INSERT INTO [TableName] (
    Column1, 
    Column2, 
    Column3, 
    Column4, 
    Column5, 
    Column6, 
    Column7, 
    Column8, 
    Column9, 
    Column10) 
VALUES (@p0, 
    @p1, 
    @p2, 
    @p3, 
    @p4, 
    @p5, 
    @p6, 
    @p7, 
    @p8, 
    @p9); 

select SCOPE_IDENTITY()',

N'@p0 float,@p1 float,@p2 float,@p3 float,@p4 int,@p5 datetime,@p6 nvarchar(69),@p7 int,@p8 int,@p9 int',
@p0=0,
@p1=0,
@p2=589186,74188329,           -- <-- here is my problem
@p3=320829,21535209997,        -- <-- here is my problem
@p4=6,
@p5='2009-05-10 17:00:00',
@p6=N'Some string value',
@p7=232323,
@p8=2,
@p9=1

如您所见,有一个逗号用作小数分隔符,它搞砸了参数值列表。

我还没有找到一种方法来设置用于格式化数字的文化,以便以有效的形式生成语句。

我在 ISession 上的 Save 方法调用之前将 Thread.CurrentCulture 和 CurrentUICulture 设置为 en-us,但没有发生任何事情。

可以做什么? :(

【问题讨论】:

【参考方案1】:

但是这个带有格式化数字的列表仅用于显示目的 - 设置为参数的值被设置为浮点数。这不应该导致 INSERT 以任何方式失败。

您只是预计会出现问题,还是实际上遇到了错误?如果您遇到错误,那是什么?

【讨论】:

此查询已在 SQL Server Profiler 中被截获。它是实际发送的查询。 是的,但它是一个参数化查询,参数值在哪里被写出,它们正在被格式化。但是在设置它们的地方,它们被设置为原生浮点值。 嗯,它实际上没有准确地报告这个问题。 我已将区域设置从罗马尼亚语切换为英语(美国),现在可以了,用点代替逗号,语句不再失败。我怎样才能说服 NHibernate 在其他区域设置上工作? :(((((( 好的 - 你能发布异常的详细信息吗?

以上是关于NHibernate 数字格式问题 - 我在哪里设置文化?的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里可以找到 Fluent NHibernate 教程?

NHibernate - 无法执行查询 - 输入字符串的格式不正确

流畅的 nHibernate 数据库连接

postgresql 将数字转换为日期和格式

Nhibernate - xml 列格式不正确

Excel中将数据格式设为数值型怎么设