【问题标题】:Filtering Asynchronous OData Queries on Windows Phone 7在 Windows Phone 7 上过滤异步 OData 查询
【发布时间】:2010-09-30 15:29:51
【问题描述】:

我正在为 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 中所做的那样。如果这不是异步数据检索的选项,我该如何实现对查询的过滤?

【问题讨论】:

    标签: windows-phone-7 odata


    【解决方案1】:

    目前在 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 方法并手动构造 URL,而不使用 DataServiceQuery 类,如上述博客中所述,第一个正式版本中将不提供该类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 2012-05-10
      相关资源
      最近更新 更多