#c# #asp.net #sql-server #asp.net-core #asp.net-mvc-4
Вопрос:
Я могу решить эту проблему, когда выбираю тип decimal(5,2)
данных .
Тип данных во всех столбцах находится decimal(7,6)
в SQL Server.
Класс модели
public double SM1 { get; set; }
public double SM2 { get; set; }
public double SM3 { get; set; }
public double SM4 { get; set; }
Приведение на стороне сервера, выполненное и попытанное преобразовать в десятичное, также не работает, так как я пытаюсь обновить запись. И я получаю ошибку следующим образом :
Ошибка арифметического переполнения при преобразовании числа в тип данных numeric
Код на стороне сервера
int UpdateSaveProductMargin = cls.fncSaveProductMargin(
Convert.ToDecimal(viewModel.SM1),
Convert.ToDecimal(viewModel.SM2),
Convert.ToDecimal(viewModel.SM3),
Convert.ToDecimal(viewModel.SM4));
Я не могу изменить тип данных таблицы базы данных, так как несколько приложений подключены к одному и тому же типу данных.
Если я изменю тип данных в коде на стороне сервера на десятичный
Класс модели при обновлении
public decimal SM1 { get; set; }
public decimal SM2 { get; set; }
public decimal SM3 { get; set; }
public decimal SM4 { get; set; }
Затем мой ModelState.IsValid
возвращает false, и он не попадает в блок, где написан код обновления.
Поэтому мне нужно обновить запрос на обновление для записи, которая может скрываться decimal(7,6)
decimal(5,2)
или приводить к тому же в C#.
Комментарии:
1. Преобразование в десятичное необходимо только в том случае, если возвращаемый тип является строкой. Если возвращаемый тип-это число, которое вам не нужно преобразовывать.
2. что мне тогда делать? Любое предложение было бы полезно.
3. Каковы некоторые из значений, которые вы пытаетесь преобразовать?
decimal(7,6)
только дает вам диапазон-9.999999
сквозного9.999999
.4. Например , 10 , 20 , 30, 40 .. или если я введу 511321.3223, то он также вернет мне ту же ошибку.
5. Ну,
10
больше, чем9.999999
так нет, он не поместится вdecimal(7,6)
@ShanuGarg .(7,6)
означает, что вы хотите сохранить 7 цифр точности, причем 6 из них являются шкалой (цифры после десятичной точки). Это означает, что у вас достаточно места для одной значащей цифры и10.000000
есть 2.