C# 实体框架正在舍入整数值或屏蔽它们

C# 实体框架正在舍入整数值或屏蔽它们,c#,oracle,entity-framework,C#,Oracle,Entity Framework,实体框架更改传递给DB(oracle)的值。 在Oracle中,我有一个表,其中一个名为PointX的字段作为Float,并作为Decimal映射到EF。 当我运行代码时,要保存的实体有一个值为37的属性PointX,并将40保存到数据库中。 我测试的值的示例 实体。PointX->Oracle。PointX 37->40 6543210->6000000 41->40 35->40 在我粘贴到这里的代码块上,我检查了domainObject值,并且始终正常。 执行SaveChanges后,我检

实体框架更改传递给DB(oracle)的值。
在Oracle中,我有一个表,其中一个名为
PointX
的字段作为Float,并作为Decimal映射到EF。
当我运行代码时,要保存的实体有一个值为
37
的属性
PointX
,并将
40
保存到数据库中。
我测试的值的示例

实体。
PointX
->Oracle。
PointX

37
->
40

6543210
->
6000000

41
->
40

35
->
40

在我粘贴到这里的代码块上,我检查了domainObject值,并且始终正常。
执行
SaveChanges
后,我检查Oracle中的值,发现新值完全错误

public virtual void Save(T domainObject)
{
    // domainObject.PointX = 37;    
    db.SaveChanges();
}

我不明白它为什么这样保存值。我迷路了。

检查浮点类型的oracle精度。就我而言是126(甲骨文10)。
使用文本编辑器编辑edmx,并检查float类型的字段。如果属性上没有设置精度,只需通过以下方式设置与oracle版本相同的精度:

有问题的edmx:

<EntityType Name="MyTableEntity">
    <...>
    <Property Name="PointX" Type="float" Nullable="false" />

更改实体字段设置精度:

<EntityType Name="MyTableEntity">
    <...>
    <Property Name="PointX" Type="float" Nullable="false" Precision="126" />


我们可以查看您的表定义,特别是PointX列吗?可以。。。它的float和I可以直接用toad对表进行更新,并用EF将它们带回来,没有任何问题。只有当我保存数字更改时。您能提供我们可以运行的最小示例吗?您能拦截sql查询吗?项目非常简单,但我尝试简化代码,以查看db(上下文)接收具有所有属性和正确值的对象,并且仅在浮点字段上我有此问题。可能是映射上的属性,也可能是生成此行为的实体上的设置。还在想办法呢,谢谢。这就解决了问题。我不明白为什么没有设置这个属性。