OnStartProcessingRequest() メソッドで着信 OData Get Request をインターセプトするときにエンティティ (テーブル) 名を取得するにはどうすればよいですか? 例: 次の oData URI からエンティティ名として MusicCollection と Genre を取得したい
http://dataserver.com/service.svc/MusicCollection[SomeSong]/Genre
OnStartProcessingRequest() メソッドで着信 OData Get Request をインターセプトするときにエンティティ (テーブル) 名を取得するにはどうすればよいですか? 例: 次の oData URI からエンティティ名として MusicCollection と Genre を取得したい
http://dataserver.com/service.svc/MusicCollection[SomeSong]/Genre
これは OdataUriParser の完璧な使い方です! 私たちが話しているように、それはアクティブでインクリメンタルな開発中であり、フィルターパーサーとオーダーバイパーサーが現在利用可能であり、開発が完了するとさらに多くのパーサーが提供される予定です. 特定のシナリオを処理するパーサーの一部はまだリリースされていませんが (まだ開発中です)、その間に使用できる実験的なバージョン (公式バージョンのベース) があります。http://nuget.org/packages/Microsoft.Data.OData.Contribの OData contrib ライブラリをご覧ください。具体的には、次のようなものです。
Uri requestUri = new Uri("http://dataserver.com/service.svc/MusicCollection(SomeSong)/Genre");
Uri baseUri = new Uri("http://dataserver.com/service.svc/")
SyntacticTree parsedUri = SyntacticTree.ParseUri(requestUri, baseUri);
結果の SyntacticTree では、URI が QueryToken に分解されます。ツリーをたどって、探しているパスを見つけてください。