2013-05-16 16 views
0

В моем приложении MVC 3 я ссылаюсь на базу данных, которая затем использует метод ViewResult для отображения результатов. Мне было интересно, был ли быстрый и простой способ ограничить вывод только 10 результатами за раз, поскольку база данных велика?Предельные результаты, возвращаемые с ViewResult до 10

Мой код приведен ниже:

public ViewResult Details(int id) 
    { 
     Gap gap = db.Gaps.Find(id); 
     return View(gap); 
    } 

Надеюсь, я на правильном пути в редактировании контроллера, а не вид? Любая помощь приветствуется.

Большое спасибо.

Chri3

ответ

1

Я согласен, что вы на правильном пути редактирования контроллера. Я использую Entity Framework с Linq и использую Skip и Take для управления результатами до 10 за раз. Мой запрос был довольно медленным раньше, потому что таблица имеет более 20000 записей и растет, поэтому мне нужно было вернуть только 10 за раз.

LogListViewModel model = new LogListViewModel 
     { 
      Logs = _repository.Logs 
      .OrderBy(p => p.Timestamp) 
      .Skip((page - 1) * PageSize) 
      .Take(PageSize), 
      PagingInfo = new PagingInfo 
      { 
       CurrentPage = page, 
       ItemsPerPage = PageSize, 
       TotalItems = _repository.Logs.Count() 
      } 
     }; 
     return View(model); 
+0

Этот тип кода не должен находиться в контроллере, он должен быть в классе доступа к данным. – BNL

+0

'_repository.Logs' возвращает DbSet моего объекта. То есть в моем классе доступа к данным. Это просто ограничивает количество записей в моем наборе в контроллере. Сохраняет все красивое и развязанное. – cjsmith411

+0

Я вижу, справедливо. – BNL

Смежные вопросы