【发布时间】:2020-06-20 00:50:55
【问题描述】:
我编写了一个通用的 repo 方法,包括以下所有导航属性:
public async Task<IEnumerable<T>> GetAllWhereAsync(Expression<Func<T, bool>> expression, bool include = false)
{
if (include)
foreach (var name in _db.Model.FindEntityType(typeof(T)).GetNavigations().Select(e => e.Name))
_db.Set<T>().Include(name).Load();
return await _db.Set<T>().AsNoTracking().Where(expression).ToListAsync();
}
但是,当我调用此方法时,生成的实体不包含其导航属性。我该怎么办?
【问题讨论】:
-
Include()调用需要链接在一起并且在return中使用相同的IQueryable<T>。 LINQ 通常是不可变的,甚至会从似乎修改查询的事物中返回新的查询对象。