【问题标题】:DevForce 2010 Formatting Dates for EntityQueryEntityQuery 的 DevForce 2010 格式化日期
【发布时间】:2015-07-09 20:47:29
【问题描述】:

我遇到了需要按日期和时间查询的情况。我正在尝试编写一个日期和时间格式相同的 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;

【问题讨论】:

    标签: c# .net devforce


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2017-06-05
      相关资源
      最近更新 更多