【问题标题】:Getting error when using DbFunctions to truncate DateTime使用 DbFunctions 截断 DateTime 时出错
【发布时间】:2016-02-15 15:06:59
【问题描述】:

我正在尝试仅按日期过滤数据(截断时间)。数据库中的字段是日期时间。

作为参考,我尝试了这个不起作用的解决方案: 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported 我应该使用 EntityFunctions 替换为 DbFunctions 的地方,但是它仍然不起作用。

所以我进行了更多搜索,试图找到一些看起来像我的代码,然后我找到了另一个链接:Using DbFunctions I get error: The specified type member 'Date' is not supported in LINQ to Entities 但我仍然遇到同样的错误:

LINQ to Entities 不支持指定的类型成员“日期”。仅支持初始化程序、实体成员和实体导航属性。

有什么建议吗?

我的代码:

var data = DateTime.Now.Date;
PostVisualizacoes visualizacao = db.PostVisualizacoes.Where(v => v.UsuId == usuario.UsuId && v.PosId == post.PosId && DbFunctions.TruncateTime(v.PosVisData.Date) == data).FirstOrDefault();

【问题讨论】:

  • 我认为截断你必须在外面制作,而不是在 Enfw 中

标签: c# entity-framework date


【解决方案1】:

如果您从 PosVisData 属性中删除 .Date 调用,则可以避免该异常:

var data = DateTime.Now.Date;
PostVisualizacoes visualizacao = db.PostVisualizacoes.Where(v => v.UsuId == usuario.UsuId && v.PosId == post.PosId
                                                              && DbFunctions.TruncateTime(v.PosVisData) == data)
                                                     .FirstOrDefault();

DateTime 属性中提取日期部分是TruncateTime 静态方法的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2013-10-05
    相关资源
    最近更新 更多