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

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

不过,我在向这些查询添加过滤器时遇到了麻烦。使用 LINQ 似乎不是异步查询的选项,因此我尝试使用中提到的 AddQueryOption 方法添加 OData 过滤器 本文 (尝试获取 Id 为 1 时的结果):

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

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

理想情况下,我希望能够使用 LINQ,就像 Scott Hanselman 在他的文章中所做的那样 关于 OData 的博客文章. 。如果这不是异步数据检索的选项,我如何实现查询过滤?

有帮助吗?

解决方案

目前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 类,正如上面博客中所述,该类在第一个正式版本中将不可用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top