我使用的是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?
答案 0 :(得分:2)
EntityFunctions
已被实体框架v6.0中的DbFunctions取代。
您应该将EntityFunctions.TruncateTime
更改为DbFunctions.TruncateTime
并从项目中删除System.Data.Entity
。