Linq-To-Entities中是否有DateTime.Ticks或DateTime.TimeOfDay的替代方案?

我正在为asp.net mvc2 Web应用程序编写日志解析器。我使用Entity框架作为模型,并使用我的手动引擎和SqlServer2008 CDC功能完成日志记录。 在数据库中插入或编辑行时,将记录操作。但是,实际表中发生的更改与记录这些更改之间存在一个小的延迟。当用户点击其中一些时,我需要显示CDC表中的详细信息。由于前面提到的滞后,我无法比较两个DateTime值的等价性。我想允许滞后2000毫秒。我知道最简单的方法是使用Ticks或TimeOfDay并比较它们减去的值的绝对值,但该死的Linq-To-Entities不允许这两个属性。 这是我遇到问题的简单功能......
        public static List<dbo_Object_CT> GetLogDetails (Int32 objectID, DateTime? actionDateAndTime)
    {
        ObjectEntities oe = new ObjectEntities();

        var mylogdetails = (from objectLog in oe.dbo_Object_CT
                     join ltm in oe.lsn_time_mapping on objectLog.C___start_lsn equals ltm.start_lsn
                     where (objectLog.Id == objectID)
                     && ((actionDateAndTime == null) ? true : (Math.Abs(actionDateAndTime.Value.Ticks - ltm.tran_begin_time.Value.Ticks) < 2000))
                     select objectLog).ToList();

        return mylogdetails;
    }
我知道我可以手动做“where”子句,但它会很大,很丑,很慢。有没有人有更好的吸烟?     
已邀请:
看看EF Canonical函数和SQL Server特定的函数。以下是有关如何使用这些功能的几个指南: 如何:调用规范函数(LINQ to Entities) 如何:调用数据库函数(LINQ to Entities) 在这里,您可以找到有关EntityFunctions类的一些信息。     
关于什么
((TimeSpan) (actionDateAndTime.Value - ltm.tran_begin_time.Value)).Milliseconds > 2000 
生成SQL之类的东西
(CONVERT(Int,(CONVERT(BigInt,(CONVERT(BigInt,(((
 CONVERT(BigInt,DATEDIFF(DAY, t1, t2))) 
 * 86400000) 
 + DATEDIFF(MILLISECOND, DATEADD(DAY, DATEDIFF(DAY, t1, t2), t1), t2)) 
 * 10000)) / 10000)) % 1000)) 
不知道如何让LINQ生成sql之类的
 DATEDIFF (MS , actionDateAndTime , ltm.tran_begin_time)  
    

要回复问题请先登录注册