尝试从SQL将十进制值转换为双精度值时,无效的操作异常

时间:2019-02-10 18:46:59

标签: c# sql-server .net-core entity-framework-core .net-core-2.2

我有一个SQL表,其中有几个大的十进制值。太大,无法在我的模型中使用decimals。但是,当我使用double时,会得到一个Invalid Operation Exception,它指出无法将System.Decimal转换为System.Double

我正在.Net Core 2.2应用程序中使用EntityFramework Core。有没有一种方法可以向我的DbContext指定应将这些字段捕获为双精度而不是小数?

我正在使用Microsoft SQL Server数据库。我的列类型是十进制(38,2)。那里存储的值是〜1.0005e + 35。我知道此值太大而无法放入C#Decimal中,因此我需要将其放入System.Double中。

1 个答案:

答案 0 :(得分:2)

我知道了。显然,EF Core将不同的SQL类型直接指定为C#类型。因此,SQL decimal映射到C#Decimal。 SQL float映射到C#System.Double。 SQL real映射到C#System.Float

因此,解决此问题的方法是将SQL表中的decimal(38,2)更改为float