我正在尝试使用EF的自定义框架,但我遇到了一个我不明白的问题。错误如下。这似乎非常明显,但我不确定如何解决它
The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties.
参数名称:路径
我正在调用此函数,它会抛出上面的异常。
_menuRepository.GetAll(d => d.DateToDisplay <= DateTime.Today).OrderByDescending(d=>d.Id).Take(100).ToList();
和GetAll()函数如下所示。
public virtual IList<T> GetAll(params Expression<Func<T, object>>[] navigationProperties)
{
List<T> list;
using (var context = new DBEntities())
{
IQueryable<T> dbQuery = context.Set<T>();
//Apply eager loading
foreach (Expression<Func<T, object>> navigationProperty in navigationProperties)
dbQuery = dbQuery.Include<T, object>(navigationProperty); //**** It throws the exception here
list = dbQuery
.AsNoTracking()
.ToList<T>();
}
return list;
}
我做错了什么?我该如何解决这个问题?
答案 0 :(得分:2)
EF中的表达式应该是一个检索对象的属性的lambda。在你的例子中
d => d.DateToDisplay <= DateTime.Today
是谓词 - 它评估为布尔值:这就是为什么Include无法确定哪个属性包含&#34;。
我猜你已经把Include与LINQ Where clase混淆了。显然,这应该有效:
_menuRepository.GetAll(d => d.DateToDisplay).OrderByDescending(d=>d.Id).Take(100).ToList();
如果只有T类型具有属性 DateToDisplay 。