UWPでMicrosoft.OData.Clientを使用する時、LINQ式でエラー

公開日: : Blog, Microsoft, 未分類 , , ,

UWPからは非同期メソッドを実行する必要があるので、通常はExecuteAsyncをコールするが、
LINQ式を使ってエンドポイントに投げようとすると以下の例外が発生する。

This target framework does not enable you to directly enumerate over a data service query. This is because enumeration automatically sends a synchronous request to the data service. Because this framework only supports asynchronous operations, you must instead call the BeginExecute and EndExecute methods to obtain a query result that supports enumeration.

IQueryableをDataServiceQueryにキャストしてBeginExecuteとEndExecuteを非同期実行する必要がある。
以下のようなメソッドを作成してLINQを渡してやれば良い。

protected Task<IEnumerable<T>> ExecuteAsync<T>(IQueryable<T> query)
{
    var odataQuery = (DataServiceQuery<T>)query;
    var taskFactory = new TaskFactory<IEnumerable<T>>();
    return taskFactory.FromAsync(odataQuery.BeginExecute(null, null), iar => odataQuery.EndExecute(iar));
}

関連記事

no image

【XAML/VB.NET】XAMLファイルを帳票フォーマットとして使用する

掲題について。結論としてはFixedPageをルートとするXAMLファイルを XamlReader

記事を読む

no image

Xamarin.UITest, Xamarin Test Cloud にて iPhone 6 Plus, 6S Plus, 7 Plus などで app.Tap が効かない

動作しないというか、app.Tapがどうしても反応しない。 app.ScreenShotなどは動作す

記事を読む

Xamarin iOS, Android での位置情報、Bluetoothの有効化メモ

OSが勝手に出してくれたりくれなかったりのところを整理するためのメモ 諸事情によりサンプルはXama

記事を読む

no image

FixedDocumentの印刷およびXPS形式での保存

こんにちは。 以前、XAMLファイルを帳票テンプレートとして動的ロードする記事を掲載しました。

記事を読む

Visual Studio から Android SDK Managerが起動できない

Android SDKやエミュレーターイメージのアップデートを行いたい場合にAndroid SDK

記事を読む

ストアアプリ、UWPアプリをデスクトップアプリケーションから起動する

SendKeyなどを使って無理やり検索ウインドウへ指定した、起動方法しか知らなかったのでメモ(とんで

記事を読む

no image

【ストアアプリ】資格情報の保存と読み込み

こんにちは。 Windowsストアアプリで資格情報をセキュアに保存する方法について。

記事を読む

【XAML】フォントサイズを自動縮小して全体を表示

Viewboxを親にするだけ。 拡大・縮小方法はStretch, StretchDirec

記事を読む

Visual Studio Team Services で 新規プロジェクトを作成するときの自分用初期設定メモ

新規プロジェクト作成 Version control -> Git Work item proc

記事を読む

【ストアアプリ】バッジ通知(BadgeUpdateManager)について

こんにちは。 前回のタイル通知にバッジ通知を追加しました。 以下を参考に。 https

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑