База данных Entity Framework сначала не принимает значения с 12 знаками после запятой

#c# #database #entity-framework

#c# #База данных #entity-framework

Вопрос:

В моей базе данных у меня есть столбец, определенный с десятичным числом (30,12). Я пытаюсь обновить значение столбца десятичными знаками до 12 знаков. Но это выдает мне ошибку «переполнение преобразования», когда я делаю dbcontext.save из entity framework. в принципе, я хотел поддерживать deciaml с 14 didit слева и 12 цифрами справа. (12345678998734.898989898989)

Комментарии:

1. Какую базу данных вы используете? Кроме того, столбец должен быть определен как десятичный (26,12). В зависимости от версии базы данных пределы максимальной точности десятичной дроби различаются.

2. На всякий случай, синхронизирован ли ваш dbcontext с базой данных? Это может произойти, если вы обновили базу данных после обновления edmx

Ответ №1:

Максимальная точность, разрешенная в SQL Server, равна 38. Но десятичный тип данных SQL Server не сопоставлен с .Чистая десятичная дробь во всем диапазоне. Десятичный тип .Net сопоставляется только с типом SQL Server в десятичном диапазоне (29, X). (источник)

Это означает, что если у вас есть десятичный столбец с точностью выше 29 и независимо от масштаба, вы не сможете использовать собственный .Тип данных Net.

Попробуйте использовать тип SqlDecimal.

Полные правила типа SQL

Комментарии:

1. Максимальная точность, разрешенная для SQL server, действительно равна 38, но десятичная (30,12) — это точность 30 со шкалой 12. Эти значения не суммируются. Таким образом, она должна соответствовать диапазону SQL server.

2. Согласен с @Kami. Я использую десятичную (30,12) точность 30 со шкалой 12. ТАКИМ образом, она должна легко принимать десятичные значения с общей длиной = 30 и с 12 знаками после запятой. Но в моем случае это не так.