【问题标题】:Upgrading to EF 6 and now getting a LINQ error升级到 EF 6,现在出现 LINQ 错误
【发布时间】:2015-09-12 16:16:27
【问题描述】:

我使用的是 Entity Framework 4 或 5,我的代码运行良好。我现在已升级到 Entity Framework 6,但出现以下错误

“LINQ to Entities 无法识别方法 'System.Nullable1[System.DateTime] TruncateTime(System.Nullable1[System.DateTime])' 方法,并且该方法无法转换为存储表达式。”

 public IEnumerable<DateTimeAndVisitCount> GetRecentVisitsByDay(int numberOfDays)
    {

        var fromDate = DateTime.Now.AddDays(-numberOfDays);
        var result = (from d in this.DataContext.VisitDetail
                      where d.DateTime >= fromDate
                      group d by (DateTime)EntityFunctions.TruncateTime((DateTime)d.DateTime) into g
                      select new DateTimeAndVisitCount()
                      {
                          DateTime = (DateTime)g.Key,
                          Count = g.Count()
                      });

        return result;

    }

在上面的对象this.DataContext.VisitDetail中,我会指出VisitDetail.DateTime不接受空值。

如您所见,我已尝试将所有内容都转换为 DateTime,但出现相同的错误消息。

如何安抚Entity Framework 6?

【问题讨论】:

    标签: c# .net entity-framework linq datetime


    【解决方案1】:

    EntityFunctions 已在 Entity Framework v6.0 中替换为 DbFunctions

    您应该将EntityFunctions.TruncateTime 更改为DbFunctions.TruncateTime 并从项目中删除System.Data.Entity

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-21
      • 2019-02-06
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多