При использовании функции bindtoLINQ gridview gridview, он запрашивает весь набор таблиц вместо страницы, на которую смотрит клиент.DevExpress MVC GridView BindToLINQ() Выбирает слишком много данных
IE. с помощью SQL Server Profiler, мы видим, он выбирает все столбцы + строки 200k в таблице вместо только предполагаемого 10.
мнения, выглядит следующим образом:
@Html.DevExpress().GridView(...).BindToLINQ("MyProject.Models.DBEntities", "myTable", (s, e) => { e.KeyExpression = "row_id"; }).GetHtml()
Сетка действительно выходит хорошо отформатированный на стороне клиента, но поскольку он отображает весь набор данных внутри моей таблицы, любое действие, выполняемое клиентом, будет выполняться слишком плохо - просто переход на следующую страницу займет ок. 15 секунд. Почему gridview не использует LIMIT и pagerow только для выбора необходимых данных, которые видны клиенту? Кажется, что использование команд Linq Skip и Take после выбора всего содержимого таблицы.
Это еще один способ, которым я пробовал, но он ведет себя так же:
// the ActionResult function inside my controller:
public ActionResult GridViewPartial() {
DBEntities dbEntities = new DBEntities();
var myLinqQuery = from s in dbEntities.myTable select new { s.row_id, s.row_username };
return PartialView("GridViewPartial", myLinqQuery);
}
// inside the Razor view:
@model IQueryable
@Html.DevExpress().GridView(...).BindToLINQ("", "", (s, e) => { e.KeyExpression = "row_id"; e.QueryableSource = Model; }).GetHtml()
В качестве альтернативы, используя Bind() вместо BindToLINQ() делает то же самое:
// inside the Razor view:
@model IQueryable
@Html.DevExpress().GridView(...).Bind(Model).GetHtml()