总和查询在十进制列EF核心+ SQlite

时间:2020-01-22 21:32:44

标签: c# sqlite linq entity-framework-core

我遇到了一个问题,即我们的列类型为decimal(18,7)的十进制列导致Sum操作在本地求值。

从我之所以能够找到这是因为SQlite's numeric datatype's。我以为那只是一个例子,但是在将我们的小数更改为decimal(10,5)而不是decimal(18,7)之后,求和运算不再在本地运行。这使我感到困惑,因为据我了解,数据类型/亲和力实际上并不影响数据的存储方式。

decimal(10,5)起作用的事实似乎也与他们做出的以下陈述相矛盾。

请注意,SQLite会忽略类型名称后面的括号中的数字参数(例如:“ VARCHAR(255)”)

我们正在使用SQlite从SQL Server Db中本地存储数据的副本,并且SQL Server使用decimal(18,7),因此我们不能为SQlite更改它。

有什么办法可以改变这一点,所以我们可以在小数列上使用linq Sum操作?

编辑:

我发现,如果我在Sum中将小数转换为双精度数,它将可以正常工作。似乎它不想将其转换为SQL,因为它将失去精度。目前,我正在调用ToList在进行求和之前将记录拉到本地,但这似乎非常浪费

这是否意味着我们的十进制列实际上作为浮点存储在数据库中?

0 个答案:

没有答案