Pergunta

Estou trabalhando em um aplicativo para o Windows Phone 7 que faz consultas assíncronas ao OData. Eu uso o seguinte formulário geral para a consulta:

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

Estou tendo problemas para adicionar filtros a essas consultas, no entanto. O uso do LINQ não parecia ser uma opção para consultas assíncronas, então tentei adicionar filtros OData usando o método de adição de adição mencionado em Este artigo (tentando obter resultados para quando o ID é 1):

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

Se pegarmos o URL do resultado assíncrono e colá -lo em um navegador, ele funciona corretamente e retorna o resultado esperado. No entanto, tentar avaliar o resultado da consulta sempre parece resultar em uma UTSupportEdException, sem mensagem ou rastreamento interno da pilha.

Idealmente, eu gostaria de poder usar o LINQ, como Scott Hanselman fez em seu Postagem do blog sobre Odata. Se isso não é uma opção para recuperação de dados assíncronos, como posso obter a filtragem na consulta?

Foi útil?

Solução

Atualmente, o suporte do LINQ na plataforma Windows Phone 7 está limitado. O cliente anterior do WCF Data Services deveria tentar o que funcionaria e o que não funcionaria para nossos usuários, mas tem suas limitações. Veja esta postagem do blog para mais detalhes: http://blogs.msdn.com/b/astoriateam/archive/2010/09/27/wcf-data-services-client-library-and-windows-phone-7-next-steps.aspx

Em geral, sugiro que você use o método Beginexecute e construa o URL manualmente sem o uso da classe DataServiceQuery, que, como observado no blog acima, não estará disponível no primeiro lançamento oficial.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top