Has*_*taf 6 c# linq postgresql precision entity-framework
我正在使用带有实体框架的 Postgres 数据库。
在我的数据库中有一个表,其中包含列price (numeric)和值,例如12314.0464314894136514658489431486146548
当我使用 LINQ 查询获取数据时,它会引发错误:
mscorlib.dll 中发生“System.OverflowException”类型的异常,但未在用户代码中处理
附加信息:数值不适合 System.Decimal
在我的模型类中,price属性的数据类型为decimal(19,4)
我认为数据库表中的值具有更高的精度,而我的模型属性的精度较低,
所以我的问题:有没有什么方法可以从数据库表中获取具有截断/舍入值的数据,这将适合我的模型属性?
注意:我被限制不能对数据库进行任何更改,所有我必须在 C# 代码中完成的操作。
提前致谢
在文件中添加Select查询.edmx,解决了我的精度问题。
导航到<EntitySet>标签,然后添加选择查询。
<edmx:StorageModels>
<Schema>
<EntityContainer>
<EntitySet Name="books" EntityType="Self.books" store:Type="Tables" store:Schema="public">
<DefiningQuery>SELECT "books"."name", (("books"."price")::double precision)::numeric FROM "public"."books" AS "books"</DefiningQuery>
</EntitySet>
</EntityContainer>
</Schema>
</edmx:StorageModels>
Run Code Online (Sandbox Code Playgroud)
现在,当我选择该列时,使用下面的查询,它返回正确适合 C# 的十进制数据类型的值,无需在数据库中进行任何更改。
<edmx:StorageModels>
<Schema>
<EntityContainer>
<EntitySet Name="books" EntityType="Self.books" store:Type="Tables" store:Schema="public">
<DefiningQuery>SELECT "books"."name", (("books"."price")::double precision)::numeric FROM "public"."books" AS "books"</DefiningQuery>
</EntitySet>
</EntityContainer>
</Schema>
</edmx:StorageModels>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9007 次 |
| 最近记录: |