Получить объекты из ObjectSet, указав диапазон в EF
Я пробую EF 4.0. У меня есть объект Employee, и с помощью EF я получаю ObjectSet Employee, просто вызывая
Context.Employees
Теперь вышеприведенный вызов будет выплевывать следующий SQL-запросselect * from Employees
Приведенный выше запрос работает нормально, и у меня нет никаких претензий к нему, однако, как вы знаете, этого будет недостаточно, если у вас есть несколько миллионов записей в таблице, и это определенно повлияет на производительность.
Итак, я пытаюсь найти способ дать диапазон моему ObjectSet, где я могу сказать что-то вроде получения записей от 30 до 60 из Employee ObjectSet.
Есть ли способ сделать что-то подобное.
Любые предложения будут высоко оценены.
Обновление: я пытаюсь сделать это, чтобы вернуть 20 сотрудников (размер страницы) на основе индекса страницы.
Заранее спасибо. НиК...
1 ответ
Хорошо, я наконец-то нашел способ сделать это, который я считаю довольно приличным. И вот что я сделал.
Я использовал методы Skip и Take в IQueryable, чтобы пропустить и взять объекты на основе индекса страницы.
Поэтому я использовал следующий код:
var empList = context.Employees.OrderBy("it.CreatedDate").Skip(pageIndex * 20 - 20).Take(20);
Это один из способов.
Если кто-то считает, что это не очень хорошее решение, вы можете предложить что-то еще, чем я могу заменить.
Обновленный код В соответствии с предложением Юрия Тарабанко я изменил свой код следующим образом:
var empList = context.Employees.OrderBy(x=>x.CreatedDate).Skip(pageIndex * 20 - 20).Take(20);
Спасибо тем, кто нашел время, чтобы прочитать мой вопрос.
Thnq, NiK...