Я слежу за учебником Фила Хаака по использованию JQGrid с ASP.Net MVC.Мое приложение ASP.Net MVC 3, использующее Entity Framework 4.
У меня есть следующий код для сортировки и подкачки моих данных, который возвращается в JQGrid
var query = equipService.GetAllEquipment().AsQueryable()
.OrderBy("it." + sidx + " " + sord)
.Skip(pageIndex * pageSize)
.Take(pageSize);
Однако,этот код создает ошибку в строке .OrderBy ("it." + sidx + "" + sord).Ошибка:
System.Linq.Queryable.OrderBy<TSource,TKey>(System.Linq.IQueryable<TSource>, System.Linq.Expressions.Expression<System.Func<TSource,TKey>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
Запрос вызывает метод GetAllEquipment () в моем слое обслуживания, который выглядит следующим образом:
public List<Equipment> GetAllEquipment()
{
List<Equipment> equipList = new List<Equipment>();
equipList = equipRepository.GetAllEquipment();
return equipList;
}
Этот метод затем вызывает то же имя методав моем репозитории вот так
public List<Equipment> GetAllEquipment()
{
var query = (from e in Data.DBEntities.Equipments
select e).ToList();
return query;
}
Я могу решить проблему, создав экземпляр моего objectcontext в методе контроллера и используя этот код
using (AssetEntities context = new AssetEntities())
{
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int totalRecords = context.Equipments.Count();
int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);
var query = context.Equipments
.OrderBy("it." + sidx + " " + sord)
.Skip(pageIndex * pageSize)
.Take(pageSize);
}
Однако я недействительно не хочу этого делать, скорее я бы хотел придерживаться шаблона хранилища, который я использую в своем приложении для всего взаимодействия с базой данных.
Есть идеи, как мне это исправить?
Спасибокак всегда все.