Question

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

DataServiceQuery<Entity> query = ourEntities.CreateQuery<Entity>("Entities");
entities.BeginExecute(QueryComplete, query);

Je ne parviens pas à ajouter des filtres à ces questions, cependant. LINQ ne semble pas être une option pour les requêtes asynchrones, j'ai donc essayé l'ajout de filtres OData en utilisant la méthode de AddQueryOption mentionnée dans cet article (essayer d'obtenir des résultats lorsque l'ID est 1):

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

Si nous prenons l'URL du résultat async et le coller dans un navigateur, il fonctionne correctement et renvoie le résultat attendu. Cependant, en essayant d'évaluer le résultat de la requête semble toujours entraîner une NotSupportedException sans message ou trace de la pile interne.

Idéalement, je voudrais pouvoir utiliser LINQ, comme Scott Hanselman a fait dans son blog de href="http://www.hanselman.com/blog/CreatingAnODataAPIForStackOverflowIncludingXMLAndJSONIn30Minutes.aspx" post sur OData . Si ce n'est pas une option pour la récupération de données asynchrones, comment puis-je obtenir le filtrage sur la requête?

Était-ce utile?

La solution

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top