Silverlight, EDM / LINQ и веб-служба WCF - как передавать коллекции в Silverlight - PullRequest
3 голосов
/ 19 февраля 2009

Как правильно передать ответ (коллекцию) обратно в Silverlight?

Например, если у меня есть приложение-служба, которое расположено поверх образца базы данных Northwind, и у службы есть метод GetEmployees (). Какую «вещь» передать обратно Silverlight? IQueryable?

Тогда, учитывая что-то вроде Async / Result на стороне Silverlight, что я тоже разыгрываю? IQueryable?

UPDATE:
Это декларация [AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)], который позволяет удаленному клиенту видеть структуры (сущности) из службы ?? Я не знал, что существует такой класс, как Silverlight-friendly-WCF, так что это не то, с чего я начал. Как только я добавлю этот атрибут в решение, я больше не буду использовать сервис без него. Поэтому я не мог проверить то, что видел раньше. Любые мысли о том, что AspNetCompatibilityRequirementsMode.Alowed делает под капотом?

ОБНОВЛЕНИЕ 2:
Смотрите комментарии к Терри Донаге.

Ответы [ 3 ]

2 голосов
/ 20 февраля 2009

Вы только что попробовали передать массивы базовых типов? Пока вы не создадите DataContracts, WCF не знает, что это за объекты. Когда вы пытаетесь передать List, WCF действительно просто передает массив, так как он предназначен для попытки быть совместимым.

Определите DataContract , чтобы содержать информацию о Сотрудниках (или что-либо еще). Постарайтесь сделать это относительно простым. Когда вы создаете свой прокси (возможно, с помощью svcutil или Add Service Reference), VS2008 автоматически определит DataContracts на вашей клиентской стороне, а затем вы сможете использовать их как обычный объект.

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

WCF Ручной Путь, Правильный Путь

Ручной WCF - расширение

Также см. Главу 3 Библии WCF «Программирование служб WCF» Ювала Лоуи. Он полон информации о DataContracts.

0 голосов
/ 19 февраля 2009

Просто верните список. Если вы можете вернуть один T , то вы можете вернуть список <<em> T >.

0 голосов
/ 19 февраля 2009

При использовании обычных веб-сервисов вы должны возвращать коллекции, такие как List the SOAP formatter, чтобы знать, что с ними делать. Однако я не пользовался WCF, поэтому не знаю, изменит ли это ситуацию по-другому.

...