Я столкнулся с проблемой, когда наши десятичные столбцы с типом столбца decimal(18,7)
вызывают локальную оценку операции Sum.
Из того, что я смог найти, это потому, что число SQlite c типа данных . Я подумал, что это всего лишь пример, но после того, как мы изменили наши десятичные числа на decimal(10,5)
вместо decimal(18,7)
, операция суммирования больше не выполняется локально. Это смущает меня, потому что из того, что я понял, типы данных / сходства на самом деле не влияют на то, как хранятся данные.
Тот факт, что decimal(10,5)
работает, кажется, также противоречит следующему утверждению, которое они делают.
Обратите внимание, что в скобках числовые c аргументы, следующие за именем типа (например, "VARCHAR (255)"), игнорируются SQLite
Мы используем SQlite для хранения копия данных локально с сервера SQL Db, а сервер SQL использует decimal(18,7)
, поэтому мы не можем изменить это для SQlite.
Есть ли способ изменить это, чтобы мы могли использовать операцию linq Sum наших десятичных столбцов?
EDIT:
Я обнаружил, что если я приведу десятичное число к двойному внутри суммы все будет работать нормально. Похоже, он не хочет конвертировать его в SQL, потому что он потеряет точность. В данный момент я вызываю ToList для локального извлечения записей перед выполнением Sum, но это кажется чрезвычайно расточительным
Означает ли это, что наши десятичные столбцы на самом деле хранятся как плавающие точки в базе данных?