我正在使用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
How can I get Entity Framework with Oracle to send fractional seconds to a database in a query?