2011-12-14 4 views
2

Мой вопрос в том, как вы обрабатываете пейджинг с помощью службы данных WCF. Способ, которым я хочу его использовать, - выполнить запрос (передать размер страницы и текущую страницу) и вернуть результаты этого запроса, а также информацию поискового вызова, такую ​​как общее количество страниц, номер текущей страницы и размер страницы. Эта информация поискового вызова используется клиентом (который является другой службой, которая преобразует результат в JSON для мобильного приложения, которое его потребляет) для обработки следующих/предыдущих кнопок.Пейджинг с услугой передачи данных WCF

Однако использование LINQ в службе данных WCF слишком ограничено, оно не поддерживает выражение LINQ, которое мне нужно.

Я попытался создать служебную операцию в WCF данных, но я могу только возвращать коллекции IQueryable объектов данных, поэтому я не могу вернуть пользовательский объект, который также содержит информацию подкачки.

Есть ли способ сделать пейджинг для службы данных WCF, чтобы я рядом с результатом я также получил информацию о пейджинге?

EDIT: из-за ограничений служб передачи данных WCF я переключился на обычную службу WCF. Честно говоря, я не понимаю, почему кто-нибудь захочет использовать службу данных с этими серьезными ограничениями!

+4

Извините, я пропустил ** данные ** части вашего вопроса. WCF ** Данные ** Услуги ужасно ограничивают. Это служба RESTful, поэтому вы можете просто передавать информацию о странице и размере страницы в URL-адресе. Если вы используете его, чтобы вы могли писать запросы LINQ против него - удачи. WCF Data Services - это реализация OData, которая устанавливает ограничения на способ форматирования запроса. Вам намного лучше написать службу WCF, где вы фактически контролируете вызовы методов. – Yuck

+2

Я боялся, что это будет ответ: -/Хорошо, спасибо ... –

ответ

3

К сожалению, кажется, что услуги передачи данных WCF является слишком ограниченными, и решением для меня было, чтобы переключиться на регулярную службу WCF, так что я может использовать полный LINQ и сам определять контракты данных.

2

Посмотрите на пейджинг поставщике для WCF Data Services here и here

+1

Это не помогает мне, я думаю. Он имеет только механизм следующей страницы, но клиент не знает об общем количестве страниц ... –

+0

Правда. Не уверен, но тогда я думаю, что ваш единственный вариант - создать DataModel на заказ, содержащий данные и данные подкачки (количество страниц, текущая страница, размер и т. Д.). Хотя для этого вам, вероятно, потребуется создать пользовательский поставщик данных для типизированных данных (см. Первую статью). – Strillo

2

Использование Skip и Take для выполнения на стороне клиента подкачки данных из службы данных WCF, таких как:

var items = (from i in ctx.MyEntities 
      select i).Skip(StartIndex).Take(PageSize) 

Где StartIndex начало позиции данных, которые вы хотите вернулись и PageSize является количество возвращаемых элементов max.

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