這是我使用的通用respoitory,作爲標題說明我想知道如何過濾導航屬性。通用知識庫:如何過濾急切加載的導航屬性
public IEnumerable<T> Query(
Expression<Func<T, bool>> filter = null,
Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null,
string includeProperties = "")
{
IQueryable<T> query = _objectSet.Where(e => !e.IsDeleted);
if (filter != null)
{
query = query.Where(filter);
}
foreach (var includeProperty in includeProperties.Split
(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
if (orderBy != null)
{
return orderBy(query).ToList();
}
else
{
return query.ToList();
}
}
控制器:
var viewModel = new StudentViewModel();
viewModel.Students= _unitOfWork.Students.Query(
includeProperties: "Subjects, Instructors");
現在我的問題是我想補充一個。凡(E => e.IsDeleted!) 使用存儲庫[主題]和[教師。
感謝
編輯: 根據拉吉斯拉夫,目前這是不可能的(也是在MSDN這裏提到:http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities.aspx)
Can i just use this instead?
viewModel.Subjects = viewModel.Students.Where(i => i.StudentID ==Id.Value)
.Single().Subjects.Where(e => !e.IsDeleted);
我唯一擔心的是,查詢可返回大量記錄==請將isDeleted真實。確定我發佈的代碼作爲替代作品,我只是不想提取我不需要的數據,即使我可以使用上面的代碼進行過濾
你能否解釋一下你的意思是「使用存儲庫向[主體]和[教師]添加一個.Where(e =>!e.IsDeleted)」。 – Alex
@voo我想她想過濾包含的屬性。 – tschmit007
@ samantha07你能告訴我們query.Include()方法嗎? – Alex