DevForce 2010为实体查询格式化日期

本文关键字:格式化 日期 查询 实体 2010 DevForce | 更新日期: 2023-09-27 18:01:51

我遇到了一种情况,我需要按日期和时间查询。我试图写一个实体查询,其中的日期和时间是在相同的格式。下面的查询不返回任何行。但是,如果我删除两个日期子句,则返回行,然后我可以通过结果循环检查日期。我更喜欢在查询中使用日期。

the variable ap in the query is a C# object
var query = from log in Manager.Logs
            where log.StartDttm == ap.StartDttm
                  && log.EndDttm == ap.EndDttm
                  && log.TypeId == 1
            select log;

我想出了这个解决方法来查询每个日期在午夜到晚上11:59:59之间。我也不喜欢这样,但这至少减少了查询返回的行数。

var query = from log in Manager.Logs
            where && log.StartDttm >= ap.StartDttmQueryBegin
                  && log.StartDttm <= ap.StartDttmQueryEnd
                  && log.EndDttm >= ap.EndDttmQueryBegin
                  && log.EndDttm <= ap.EndDttmQueryEnd
                  && log.TypeId == 1
            select log;

DevForce 2010为实体查询格式化日期

DevForce不期望任何特定的日期/时间格式,也不期望在构建和执行查询时修改它们,但这不是日期格式本身,而是数据库中存储的数据的精度与"ap"对象中DateTime字段的精度造成的问题。

在EF中,您可以使用EntityFunctions和/或SQLFunctions api来执行日期/时间截断/格式化,但由于DevForce执行的客户端/服务器序列化和EntityQuery到ObjectQuery的转换,这些在DevForce中很难使用。这些api可以通过RPC调用在DevForce的"服务器端"工作。

您的解决方法,虽然可能感觉很麻烦,但可能是您最好的选择。您还可以尝试调用存储过程或使用ESQL passthru查询,这两种方法都可以让您对结果SQL查询有更多的控制。