在针对 Oracle 使用实体框架 6 时,Devart DotConnect 得到了意外的长小数点

问题描述

我有一个记录,其中在某个字段中包含一个数字:25.99。每当我使用 Devart DotConnect 从我的 C# 代码中选择这条记录时,它都会返回 25.990000000000002。因此,我的更新语句提示我这样的异常:Store update,insert,or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.

我的代码片段如下所示:

var busRoutes = (
    from route in ctx.RMBUSROUTEs
    select route
).ToArray();

foreach (var busRoute in busRoutes)
{
    busRoute.LASTUPDDATE = DateTime.Now;
}

ctx.SaveChanges();

此表中只有 ~ 100 条记录。大多数记录在该字段中包含十进制数,而只有特定的特定记录总是将 25.99 检索为 25.990000000000002。我确定存储在 DB 中的记录值是 25.99。怎么来的?提前致谢。

解决方法

尝试将 LASTUPDDATE 的类型从 DateTime 更改为 string。我不知道为什么,但它对我有用。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...