【问题标题】:EntityFunctions.TruncateTime alternative when using EF CTP5 with Sql Server Compact Edition 4.0将 EF CTP5 与 Sql Server Compact Edition 4.0 一起使用时的 EntityFunctions.TruncateTime 替代方案
【发布时间】:2011-02-21 00:19:44
【问题描述】:

我在 Sql CE 4.0 中使用 EF CTP5 代码优先。我正在尝试在两个 DateTime 属性之间进行时间不敏感的日期比较。

由于 linq to entites 无法解析 DateTime.Date 属性(本来不错),因此解决方案是使用 EntityFunctions.TruncateTime,但这似乎不适用于 Sql CE 4.0。

我可以手动比较两个日期的年、月和日,这可行,但会使代码比应有的更冗长。理想情况下,我不想更改我的查询以使用长手版本,以使它们同时适用于完整的 sql server 和 sql ce 4.0。

因此,有人对此有任何干净而聪明的解决方案吗?我认为解决方案可能涉及表达式重写,但我不太确定从哪里开始。

非常感谢任何帮助,

保罗

【问题讨论】:

    标签: entity-framework datetime linq-to-entities entity-framework-ctp5 sql-server-ce-4


    【解决方案1】:

    您可以选择更改数据库的结构吗?

    如果是这样,您可以添加一个仅包含日期时间的日期部分的额外列,然后在查询中使用该列。

    它将在您的数据库中使用更多空间,但运行速度应该更快,因为您避免了任何转换。

    【讨论】:

    • 嗨,这实际上是我在此期间所做的。就像您说的那样,这意味着作为数据库级别的查询实际上更好。在这种情况下,它并没有太大的妥协。我不想养成不将我的实体作为纯业务对象的习惯。如果我发现我需要添加其他“帮助”列进行查询,那么我认为我必须认真研究旨在减少此类不匹配的报告数据库。谢谢你的回答我很感激
    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    相关资源
    最近更新 更多