升级到EF 6,现在出现LINQ错误

时间:2015-09-12 16:16:28

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

我使用的是Entity Framework 4或5,我的代码运行正常。我现在已升级到Entity Framework 6,我收到以下错误

  

" LINQ to Entities无法识别方法' System.Nullable 1[System.DateTime] TruncateTime(System.Nullable 1 [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?

1 个答案:

答案 0 :(得分:2)

EntityFunctions已被实体框架v6.0中的DbFunctions取代。

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