Я сначала использую EF4 с кодом, и у меня есть репозиторий для сохранения и уровень сервиса, который с ним взаимодействует. У меня есть метод уровня обслуживания, который вызывает метод IQueryable в моем репозитории и возвращает IEnumerable, содержащий объекты. Мне также нужно вернуть общее количество записей, чтобы я мог вычислить ссылки на страницы.
Как мне вернуть как int, так и IEnumerable из моего метода службы?
Все они должны работать, но какой из них самый чистый?
ОБНОВЛЕНИЕ: Вот некоторые пояснения к архитектуре. Если это не так, скажите, пожалуйста, лучший способ (например, выполнить разбиение по страницам на уровне представления, а не на уровне обслуживания и т. Д.)
Уровень репо:
возвращает IQueryable из DbSet, абстрагирует доступ к базе данных из уровня представления
Уровень обслуживания:
выполняет LINQ-запрос к IQueryable для фильтрации и просто получения элементов страницы по мере необходимости с помощью skip and take и возвращает IEnumerable (будет также установлено значение List при возврате, чтобы избежать проблем с жизненным циклом DbContext)
Уровень представления:
Вызов метода на уровне обслуживания (getPagedResults (filters, pageNumber, pageSize))
Судя по всему, мне также нужно будет добавить отдельный метод для получения общих результатов. Надеялся сделать все за один звонок.
Я бы предпочел не возвращать все записи в презентацию, а затем страница ... кажется неэффективной.