2010-10-05 12 views
5

J'ai vraiment besoin d'être capable d'effectuer un 'DISTINCT' sur une requête de service de données WCF.Puis-je effectuer un 'Distinct' avec une requête de service de données WCF (OData)?

De ce que je peux dire, une telle fonction n'existe pas. Je sais que je peux utiliser la méthode d'extension Distinct dans la requête Linq sur le client, mais il hydrate tout le jeu de résultats complet (ce qui n'est pas ce que je veux dans ce cas particulier).

Des idées?

Répondre

5

Non intégré. Il ne fait pas partie du protocole OData du tout (aucune agrégation n'est autre que le nombre, ce que aurait certainement besoin de considérer). L'approche recommandée consiste à récupérer toutes les données et à définir les opérations sur le client (beurk!). Cela dit, vous devrez étendre les services de données WCF à la fois sur le client et sur le serveur pour fournir cette fonctionnalité (je ne suis pas assez familier avec cela pour vous indiquer les bonnes connexions).

Vous pouvez toujours fournir un WebMethod (ce n'est que le WCF d'ailleurs) pour faire ce travail, mais j'imagine que ce n'est pas la façon dont vous envisagez d'utiliser Data Services.

4

Je recommande d'utiliser un service de données WCF, Opération de service - http://msdn.microsoft.com/en-us/library/cc668788.aspx, comme une meilleure solution (sur une méthode web). Les opérations de service constituent un excellent moyen d'encapsuler les fonctionnalités de requête non activées par la syntaxe de la requête OData.