在Windows Phone 7上过滤异步OData查询

时间:2010-09-29 20:31:37

标签: windows-phone-7 odata

我正在开发一个Windows Phone 7应用程序,它对OData进行异步查询。我使用以下一般形式进行查询:

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

我无法在这些查询中添加过滤器。使用LINQ似乎不是异步查询的选项,所以我尝试使用this article中提到的AddQueryOption方法添加OData过滤器(尝试获取Id为1时的结果):

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

如果我们从异步结果中获取URL并将其粘贴到浏览器中,它将正常工作并返回预期结果。但是,尝试评估查询结果似乎总是导致NotSupportedException没有消息或内部堆栈跟踪。

理想情况下,我希望能够使用LINQ,就像Scott Hanselman在blog post about OData中所做的那样。如果这不是异步数据检索的选项,我该如何实现对查询的过滤?

1 个答案:

答案 0 :(得分:2)

目前,Windows Phone 7平台上的LINQ支持受到限制。以前的WCF数据服务客户端旨在尝试哪些工作和哪些不适合我们的用户,但它有其局限性。有关详细信息,请参阅此博客文章:http://blogs.msdn.com/b/astoriateam/archive/2010/09/27/wcf-data-services-client-library-and-windows-phone-7-next-steps.aspx

一般情况下,我建议您使用BeginExecute方法,而不是使用DataServiceQuery类手动构建URL,如上面的博客中所述,在第一个正式版本中将无法使用。