Фильтрация асинхронных запросов OData в Windows Phone 7 - PullRequest
1 голос
/ 30 сентября 2010

Я работаю над приложением для Windows Phone 7, которое выполняет асинхронные запросы к OData.Я использую следующую общую форму для запроса:

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

У меня проблемы с добавлением фильтров к этим запросам.Использование LINQ, по-видимому, не подходит для асинхронных запросов, поэтому я попытался добавить фильтры OData, используя метод AddQueryOption, упомянутый в этой статье (пытаясь получить результаты, когда идентификатор равен 1):

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

Если мы возьмем URL-адрес из асинхронного результата и вставим его в браузер, он будет работать правильно и вернет ожидаемый результат.Однако попытка оценить результат запроса всегда приводит к NotSupportedException без сообщения или трассировки внутреннего стека.

В идеале я хотел бы иметь возможность использовать LINQ, как Скотт Хансельман в своем сообщение в блоге о OData .Если это не вариант для асинхронного извлечения данных, как я могу добиться фильтрации по запросу?

1 Ответ

2 голосов
/ 30 сентября 2010

В настоящее время поддержка LINQ на платформе Windows Phone 7 ограничена. Предыдущий клиент WCF Data Services должен был попробовать, что будет работать, а что не будет работать для наших пользователей, но у него есть свои ограничения. Смотрите этот блог для более подробной информации: 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, который, как отмечалось в приведенном выше блоге, не будет доступен в первом официальном выпуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...