Как реализовать пейджинг в коде «Контроллер / с действиями и представлениями чтения / записи, используя Entity Framework»? - PullRequest
0 голосов
/ 21 апреля 2011

Это код контроллера ASP.MVC 3, сгенерированный мастером «Контроллер / с действиями и представлениями чтения / записи, использующими Entity Framework», входящими в комплект инструмента EF 4.1. Он отлично работает в демонстрациях, когда у вас есть 10-20 записей, но когда вы извлекаете данные из DbContext с более чем 10 000 записей, это, очевидно, замедляет работу и создает необычно длинную страницу.

Итак, как бы вы изменили Index () для реализации подкачки в db.Courses.ToList () ?

// wizard generated MVC Controller code
namespace Scheduler.Controllers
{ 
  public class CourseController : Controller
  {
    private CourseEntities db = new CourseEntities();

    //
    // GET: /Course/

    public ViewResult Index()
    {
        // returns over 10,000 courses in the list
        return View(db.Courses.ToList());
    }

  }
}

Ответы [ 2 ]

1 голос
/ 22 апреля 2011

Вы можете использовать пакет PagedList NuGet. Смотрите этот урок: http://www.asp.net/entity-framework/tutorials/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

1 голос
/ 21 апреля 2011

Кажется, что немного Linq для сущностей в порядке.

Вот мой модифицированный контроллер Index ():

public ViewResult Index(int page = 0)
{
    int pageSize = 10;
    var courses = db.Courses.OrderBy(c => c.Id).Skip(page * pageSize).Take(pageSize);
    return View(courses);
}

Затем создайте ссылки в представлении, которые добавляют параметр страницы к URL-адресу следующим образом:

/ курс? Страница = 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...