MVC3, Entity Framework 4.1 Сначала код):
public virtual IQueryable< ProgramMaster > GetQueryableSort(string sortField="", string sortDirection="")
{
IQueryable<ProgramMaster> query = _dbSet;
ParameterExpression pe = Expression.Parameter(typeof(ProgramMaster), string.Empty);
MemberExpression property = Expression.PropertyOrField(pe, sortField);
//get a exception here if the sort field is of navigation property (University.UniversityName)
LambdaExpression lambda = Expression.Lambda(property, pe);
if (sortDirection == "ASC")
orderbydir = "OrderBy";
else
orderbydir = "OrderByDescending";
MethodCallExpression call = Expression.Call(typeof(Queryable),
orderbydir, new Type[] { typeof(TEntity), property.Type }, query.Expression, Expression.Quote(lambda));
var returnquery = (IOrderedQueryable<ProgramMaster>)query.Provider.CreateQuery< ProgramMaster >(call);
return returnquery;
}
На странице отображается сетка с двумя столбцами Название программы и Название университета с использованием веб-сетки.Сортировка работает нормально для столбца Имя программы, однако происходит сбой при сортировке по имени университета, поскольку это свойство находится в UniversityMaster, а Expression.PropertyOrField выполняет поиск этого свойства в ProgramMaster.Вот исключение:
University.UniversityName 'не является членом типа' App.Core.Model.ProgramMaster
Мой вопрос заключается в том, как заставить эту работунавигационные свойства моего модельного класса.
Надеюсь, я смог объяснить сценарий.Любая помощь приветствуется.