SQL десятичная проблема
У меня есть строка ввода в следующем формате: 12.34
Когда я называю эту строку:
db.AddInParameter(insertMessageDetailCommand, "AttachmentSize", System.Data.SqlDbType.Decimal , Convert.ToDecimal(this.messageEnvelope.EnvelopeInfo.AttachmentSize));
Я получаю строку ввода не в правильном формате. На сервере, который я развернул, должны быть региональные настройки с разделителем "," для десятичных дробей. Но другие производственные серверы могут иметь "." сепараторы.
Как я могу передать это строковое значение: 12.34 этой функции, чтобы оно не ломалось и было достаточно универсальным, чтобы противостоять любым региональным настройкам, которые вы выбрасываете?
1 ответ
Решение
Укажите культуру при разборе строки, чтобы устранить различия в настройках сервера. Ты можешь использовать InvariantCulture
, который использует точку в качестве десятичного разделителя:
Convert.ToDecimal(this.messageEnvelope.EnvelopeInfo.AttachmentSize, CultureInfo.InvariantCulture)