LINQ to Entities结果与SQL查询结果不一致(使用ODP.net)

时间:2012-11-28 18:39:23

标签: entity-framework linq-to-entities odp.net

我的LINQ查询返回了一些奇怪的结果。

LINQ查询(返回不正确的结果):

IEnumerable<PART_EVENTS> parts = db.PART_EVENTS
    .Where(p => p.OP == op.NCM_DB_NAME && p.Timestamp > tempBegin && p.Timestamp <= tempEnd)                
    .OrderBy(p => p.PART_ID_NUM)
    .ThenBy(p => p.Timestamp)
    .ToList();

Visual Studio调试器中返回的结果显示每个唯一的部件ID的相同时间戳,但SQL Developer或查询窗口(在服务器资源管理器中)中的直接查询显示不同的时间戳(实际上,每行的时间戳应该是不同。)

SQL Query(返回正确的结果):

select * 
from PART_EVENTS
where OP = 'OP20B'
    AND "Timestamp" > to_date('11/28/2012 07:00 am', 'mm/dd/yyyy hh:mi am')
    AND "Timestamp" <= to_date('11/28/2012 10:58 am', 'mm/dd/yyyy hh:mi am')
order by part_id_num, "Timestamp"

我已经尝试了很多东西来尝试纠正这个并且已经持续了2天,但我不知道我做错了什么或者是否由EF生成的SQL有问题。

任何建议都将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

在发布我的问题之前,我决定再尝试一下:将“Timestamp”别名更改为PART_TIMESTAMP。显然LINQ不喜欢引用的别名。这解决了这个问题。