Получить объекты из ObjectSet, указав диапазон в EF - PullRequest
5 голосов
/ 26 июля 2010

Я пробую EF 4.0. У меня есть объект Employee, и с помощью EF я получаю ObjectSet Employee, просто вызывая

Context.Employees

Теперь вышеприведенный вызов будет выплевывать после запроса SQL select * from Employees

Приведенный выше запрос работает нормально, и у меня нет никаких претензий к нему, однако, как вы знаете, этого будет недостаточно, если у вас в таблице несколько миллионов записей, и это определенно повлияет на производительность.

Итак, я пытаюсь найти способ дать диапазон моему ObjectSet, где я могу сказать что-то вроде получения записей от 30 до 60 из ObjectSet Employee.

Есть ли способ сделать что-то подобное.

Любые предложения будут высоко оценены.

Обновление: Я пытаюсь сделать это, чтобы получить 20 сотрудников (размер страницы) обратно на основе индекса страницы.

Спасибо заранее. NiK ...

1 Ответ

4 голосов
/ 26 июля 2010

Хорошо, я наконец-то нашел способ сделать это, который я считаю довольно приличным.И вот что я сделал.

Я использовал методы 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);

Спасибо тем, кто нашел время, чтобы прочитать мой вопрос.

Спасибо, NiK ...

...