为什么我的Linq Oracle DB查询无法正确比较时间戳和日期时间?

问题描述 投票:2回答:1

我正在使用Linq查询代表Oracle数据库的EF6上下文。我试图基于TIMESTAMP字段从表中选择行,该字段将日期时间最多存储几分之一秒。这是您可以编写的最垃圾标准的查询,但它不起作用。

data = await dbContext.MyTable.Where(x => x.Timestamp > LastTimestamp).ToArrayAsync();

此查询似乎返回表中的所有数据,而不管时间戳的值如何。当我单步执行代码并检查返回的每个实体的属性时,它们具有正确的数据,但不应该将它们作为结果集的一部分。

该实体将Timestamp属性指定为DateTime对象,这是Oracle数据类型TIMESTAMP的正确表示吗?

我认为问题在于,高分辨率时间戳最终总是比我传递的日期时间稍早,而Linq已将其截断。有没有办法解决这个问题?

一些相关问题:

Can't compare 2 dates in oracle correctly

EF6 Oracle TimeStamp & Date

How can I get Entity Framework with Oracle to send fractional seconds to a database in a query?

c# asp.net oracle entity-framework linq
1个回答
0
投票

正如我指出的,我在这里遇到了同样的问题:

Entity Framework Oracle Timestamp

我写信给Oracle团队,他们承认这是一个错误。您可以在https://community.oracle.com/thread/4288922上检查我的问题,您需要等待Oracle.ManagedDataAccess.EntityFramework的新版本得到修复。

但是,作为一种替代方法,您可以使用SQLRawQuery,它对我们有用。

SQLRawQuery
© www.soinside.com 2019 - 2024. All rights reserved.