Проблема формата чисел NHibernate - где я могу установить культуру? - PullRequest
0 голосов
/ 14 января 2010

ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ: Это был я :( Это был необнуляемый столбец, оставленный незаполненным. Извините всех, кого я запутал ..

У меня проблемы с оператором INSERT, сгенерированным NHibernate, поскольку он форматирует десятичные числа с использованием региональных настроек. Сгенерированный оператор выглядит примерно так:

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

Как вы можете видеть, в качестве десятичного разделителя используется запятая, которая запутывает список значений параметров.

Я нигде не нашел способа установить культуру, используемую для форматирования чисел, чтобы оператор генерировался в правильной форме.

Я установил для Thread.CurrentCulture и CurrentUICulture значение en-us прямо перед вызовом метода Save в сеансе ISession, но ничего не произошло.

Что можно сделать? (

1 Ответ

2 голосов
/ 14 января 2010

Но этот список с отформатированными числами предназначен только для отображения - значения, установленные в качестве параметров, задаются как числа с плавающей запятой. Это не должно вызывать сбой INSERT.

Вы просто предвкушаете проблему или действительно получаете ошибку? Если вы получаете сообщение об ошибке, что это такое?

...