Запрос суммы, оцениваемый локально в десятичном столбце EF core + SQlite - PullRequest
0 голосов
/ 23 января 2020

Я столкнулся с проблемой, когда наши десятичные столбцы с типом столбца 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, но это кажется чрезвычайно расточительным

Означает ли это, что наши десятичные столбцы на самом деле хранятся как плавающие точки в базе данных?

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