编程语言
首页 > 编程语言> > c#-Linq-To-Entities中的DateTime.Ticks或DateTime.TimeOfDay是否可以替代?

c#-Linq-To-Entities中的DateTime.Ticks或DateTime.TimeOfDay是否可以替代?

作者:互联网

我正在为asp.net mvc2 Web应用程序编写日志解析器.我使用实体框架作为模型,并且使用我的手动引擎和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 functionsSQL Server-specific functions.以下是有关如何使用这些功能的一些指南:
How to: Call Canonical Functions (LINQ to Entities)
How to: Call Database Functions (LINQ to Entities)
Here您可以找到有关EntityFunctions类的一些信息.

标签:linq-to-entities,c,entity-framework,sql-server,visual-studio
来源: https://codeday.me/bug/20191106/1998885.html