实体框架正在舍入整数值或屏蔽它们
本文关键字:屏蔽 整数 框架 舍入 实体 | 更新日期: 2023-09-27 18:13:16
实体框架改变我传递到数据库(oracle)的值
在Oracle中,我有一个表,字段名为PointX
为Float,映射到EF为Decimal。
当我运行代码时,要保存的实体具有值为37
的属性PointX
,并在DB上保存40
。
我测试的值的例子
实体。PointX
-> Oracle。PointX
37
-> 40
6543210
-> 6000000
41
-> 40
35
-> 40
在我粘贴在这里的代码块上,我检查了domainObject的值,并且总是ok的。SaveChanges
执行后,我检查Oracle中的值,新值完全错误。
public virtual void Save(T domainObject)
{
// domainObject.PointX = 37;
db.SaveChanges();
}
我不明白为什么它这样保存值。我迷路了。
检查float类型的oracle精度。在我的情况下是126 (Oracle 10)。
使用文本编辑器编辑edmx,并检查float类型的字段。如果没有设置属性的精度,只需设置与oracle版本相同的精度,如下所示:
edmx with problem
<EntityType Name="MyTableEntity">
<...>
<Property Name="PointX" Type="float" Nullable="false" />
修改实体字段设置精度:
<EntityType Name="MyTableEntity">
<...>
<Property Name="PointX" Type="float" Nullable="false" Precision="126" />