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 functions和SQL 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