Можно ли выполнить «различие» с помощью запроса службы данных WCF (OData)? - PullRequest
5 голосов
/ 06 октября 2010

Мне действительно нужно иметь возможность выполнить DISTINCT для запроса службы данных WCF.

Насколько я могу судить, такой функции не существует.Я знаю, что могу использовать метод расширения Distinct в запросе Linq на клиенте, но он по-прежнему гидратирует полный набор результатов (а это не то, что мне нужно в данном конкретном случае).

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 06 октября 2010

Не встроен. В настоящее время он вообще не является частью протокола OData (никакая агрегация не является исключением, кроме подсчета, который нам определенно нужно будет даже учитывать).Рекомендуемый подход состоит в том, чтобы извлечь все данные и выполнить операции установки на клиенте (фу!).

Тем не менее, вам нужно как-то расширить службы данных WCF как на клиенте, так и на сервере, чтобы обеспечить эту функциональность (Я не достаточно знаком с ним, чтобы указать вам правильные методы).

Вы всегда могли бы предоставить WebMethod (это, кстати, только WCF), чтобы выполнить эту работу, но я бы хотелпредставьте себе, что вы не собираетесь использовать Data Services.

4 голосов
/ 12 октября 2010

Я бы порекомендовал использовать Службу данных WCF, Работа службы - http://msdn.microsoft.com/en-us/library/cc668788.aspx, в качестве лучшего решения (через веб-метод).Сервисные операции - отличный способ инкапсулировать функциональность запросов, не включенную синтаксисом запросов OData.

...