如何使用Entity Framework 4从Oracle数据库中读取最大精度值?

时间:2012-05-08 16:22:08

标签: c# .net entity-framework entity-framework-4 oracle10g

我有一个FLOAT(126)列,由实体框架映射到Decimal。除了一种情况外,它适用于写作和阅读。

当我写一个高精度值时,例如:

1m / 3m = 0.33333333333333333333333333333333

我无法阅读它,框架会抛出ArithmeticOverflowException

如何解决?我的临时解决方案是在插入之前将数字四舍五入到小数点后6位。但是,如果我需要完全精确度呢?

1 个答案:

答案 0 :(得分:2)

十进制仅支持28-29个有效数字(http://msdn.microsoft.com/en-us/library/364x0z75.aspx),并且因为EF不支持像NHibernate那样的自定义类型映射 - 所以不能加载超过类型可以处理的数量。

我不知道你是否会发生这种情况,但是通过将小数转换为浮点数,你会失去精确度,而且你可以看到你最终得到了漂浮物所具有的古怪舍入。如果你在精度之后,你真的应该使用十进制而不是浮点数,并且还将最大有效数字设置为十进制的最大值。