Операция службы WCF не предоставляет данные как запрашиваемые - PullRequest
0 голосов
/ 24 июня 2010

У меня есть сервисная операция вида:

[WebGet]
public IQueryable<BusinessObject> BusinessObjectsByType(string name)

с правилом доступа

config.SetServiceOperationAccessRule("BusinessObjectsByType", ServiceOperationRights.All);

Когда я получаю доступ к этой сервисной операции через веб-браузер, она предоставляет данные, но не в виде фидов и записей (в формате AtomPub), и при этом не позволяет мне использовать базовые параметры запроса, такие как $ top, $ orderby и т. Д. не может быть применено к запрашиваемому ресурсу '. Я соответствовал всем требованиям, указанным в http://msdn.microsoft.com/en-us/library/cc668788.aspx, но безуспешно. Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 24 июня 2010

Если объект BussinesObject не распознан как объект, операция службы будет обрабатываться так, как если бы вместо этого возвращался IEnumerable.Чтобы запрос работал, сервисная операция должна вернуть IQueryable, где T - тип сущности.Предполагая, что EF или поставщик отражений, тип сущности - это тип, который имеет ключевое свойство (эвристическое или через атрибут DataServiceKey) и для которого есть свойство в классе контекста типа IQueryable.Если объект BussinesObject не является сущностью, службы данных WCF не могут поддерживать запросы о результате операции службы.Есть много причин, чтобы назвать только одну: для сериализации ответа каждый объект должен иметь уникальный URL-адрес (это atom: id), чтобы иметь возможность генерировать уникальный URL-адрес, объект должен иметь ключевые свойства.А ключевые свойства могут быть определены только для сущностей.

...