C# 实体框架正在舍入整数值或屏蔽它们
实体框架更改传递给DB(oracle)的值。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后,我检
在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(上下文)接收具有所有属性和正确值的对象,并且仅在浮点字段上我有此问题。可能是映射上的属性,也可能是生成此行为的实体上的设置。还在想办法呢,谢谢。这就解决了问题。我不明白为什么没有设置这个属性。