DevForce 2010格式化EntityQuery的日期

时间:2015-07-09 20:47:29

标签: c# .net devforce

我遇到了需要按日期和时间查询的情况。我正在尝试编写一个EntityQuery,其中日期和时间采用相同的格式。下面的查询不返回任何行。但是,如果我删除两个日期子句,则返回行,然后我可以检查循环结果的日期。我更愿意在查询中使用日期。

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;

1 个答案:

答案 0 :(得分:0)

DevForce并不期望任何特定的日期/时间格式或在构建和执行查询时修改它们,但它不是日期格式本身,而是数据库中存储的数据的精度vs 。&#34; ap&#34;中的DateTime字段的精度导致问题的对象。

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

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