在Entity Framework Core中定义Postgres DB的数值数据类型的精度

时间:2017-05-25 05:57:48

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

我正在使用带有实体框架核心的Postgres数据库。

在我的数据库中,价格表格列为price(numeric),并存储 12345.123456789012345678901234567890 等值,即(高精度)

当我使用LINQ查询获取数据时,每次我收到错误:

  

" System.OverflowException:数字值不适合a   System.Decimal"

我在DbContext的Property.HasColumnType("decimal(20,5)")方法中找到了使用OnModelCreating()作为数据库列的方法,但它不起作用。此外,我已经看到在edmx文件中定义选择查询,但实体框架核心不生成edmx文件。

那么,我们如何在C#中使用 Entity Framework Core 定义Postgres的数值数据类型的精度? (注意:精度可以减少到至少5位小数)

1 个答案:

答案 0 :(得分:0)

enter image description here十进制不支持高精度,因此您使用了Double 其他明智的价格值转换为十进制值

示例:

1.存储价值 价格= 1234.12345678901234567890

tabledetails.Select(c =>(decimal) c.value).ToList();

获得Vlaue是1234.12345678901

2.其他明智之前使用小数存储价格值 使用以下格式

存储值

1234.12345678901234567890米

获取价值

1234.12345678901234567890