Entity Framwork округляет десятичное значение до ближайшего целого числа? - PullRequest
2 голосов
/ 30 ноября 2009

Я использую Entity Framework и MS SQL Server 2008. Кажется, что Entity Framework всегда округляет десятичный атрибут объекта до ближайшего целого числа, что действительно раздражает. Вы видели эту проблему раньше и каково ваше решение? Спасибо!

Ответы [ 4 ]

2 голосов
/ 08 декабря 2009

Я столкнулся с той же проблемой. Я использую EF с SQL Server 2008 SP1. Я использую хранимые процедуры для запроса некоторых данных. Еще одна досадная вещь: если я создаю импорт функции для хранимой процедуры, EF предоставляет функцию в контекстном классе для вызова этого sp, но для меня это не так. Поэтому я создаю свою собственную функцию для вызова sp. В этих функциях я создаю EntityParameters, предоставляя DBType.Decimal. Но этот результат в Precision and Scale установлен в 0. Когда я устанавливаю правильные числа, поскольку моя схема БД требует (3 и 1 между прочим), все в порядке.

Жолт

0 голосов
/ 07 мая 2016

в C #, int / int = int

10/2 = 5, 10/3 = 3.

Язык с усеченным ответом (не круглый), поэтому, если вы хотите получить точность, вам нужно привести переменную в двойные или десятичные числа.

0 голосов
/ 30 ноября 2009

Этого не должно быть, это короткий ответ.

Подобно тому, что сказал Тимоти, вполне вероятно, что происходит одно из следующих действий:

  • Свойство одного из ваших сгенерированных классов определяется как int, а столбец - десятичный. Это можно сделать, изменив фактический тип в конструкторе сущностей
  • Где-то в вашем коде вы работаете с целыми числами, а не с десятичными. В частности, если вы используете неявную типизацию с использованием var, компилятор может выводить целочисленный тип, а не десятичный тип

Пример для пояснения второго пункта:

var myNumber = 100;    // myNumber will be an int

myNumber = myNumber / 3;    // myNumber == 33 (an int)

Можете ли вы опубликовать код, чтобы дать нам лучшую идею?

0 голосов
/ 30 ноября 2009

Если вы не предоставите свои классы отображения и схему базы данных, я могу только предположить, что в одном из них вы используете Int или что-то, для чего задан ноль десятичных знаков точности.

Также стоит упомянуть, какую версию EF (Entity Framework) вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...