2010-09-29 2 views
1

Je travaille sur une application pour Windows Phone 7 qui effectue des requêtes asynchrones sur OData. J'utilise la forme générale suivante pour la requête:Filtrage des requêtes OData asynchrones sur Windows Phone 7

J'ai cependant des difficultés à ajouter des filtres à ces requêtes. LINQ ne semble pas être une option pour les requêtes asynchrones, alors j'ai essayé l'ajout de filtres OData selon la méthode de AddQueryOption mentionné dans this article (en essayant d'obtenir des résultats pour lorsque l'ID est 1):

query.AddQueryOption("$filter", "Id eq 1"); 

Si nous prenons la URL du résultat asynchrone et collez-le dans un navigateur, cela fonctionne correctement et renvoie le résultat attendu. Cependant, tenter d'évaluer le résultat de la requête semble toujours aboutir à une exception NotSupportedException sans message ou trace de pile interne.

Idéalement, j'aimerais pouvoir utiliser LINQ, comme Scott Hanselman l'a fait dans son blog post about OData. Si ce n'est pas une option pour la récupération de données asynchrone, comment puis-je filtrer sur la requête?

Répondre

2

Actuellement, le support LINQ sur la plate-forme Windows Phone 7 est limité. Le précédent client de services de données WCF était destiné à essayer ce qui fonctionnerait et ce qui ne fonctionnerait pas pour nos utilisateurs, mais il a ses limites. Voir ce blog pour plus de détails: http://blogs.msdn.com/b/astoriateam/archive/2010/09/27/wcf-data-services-client-library-and-windows-phone-7-next-steps.aspx

En général, je vous suggère d'utiliser la méthode BeginExecute à la place et de construire l'URL manuellement sans l'utilisation de la classe DataServiceQuery, qui, comme indiqué dans le blog ci-dessus ne sera pas disponible dans le premier sortie officielle.