数值不适合 System.Decimal

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# 代码中完成的操作。

提前致谢

Has*_*taf 0

在文件中添加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)