Ну, на самом деле ObjectQuery<T>
реализует IQueryable<T>
, поэтому реальной разницы нет.
Я бы посоветовал не связываться с IQueryable, поскольку это дает слишком много возможностей пользовательскому интерфейсу. Смысл IQueryable состоит в том, чтобы отложить выполнение запросов на более поздний момент времени (такой как BLL, уровень служб), но IMO представления слишком поздно.
Когда я говорю, что уже слишком поздно, я имею в виду, что к тому времени, когда запрос попадает в пользовательский интерфейс, больше нет запросов к базе данных. Но если пользовательский интерфейс начинает выполнять такие операции, как .Count()
или .Sum()
, у вас будет выполнено 2 запроса. Из-за этого очень трудно избавиться от контекста данных.
Мой совет, верните конкретную коллекцию: например, ICollection<T>
и привяжите к ней.
Если вам нужно сделать что-то вроде пейджинга, сделайте это через LINQ .Skip()
и .Take()
.