注: これらの手順は、サービスの最大プロトコル バージョンが 3 以上の場合にのみ機能します。OData のバージョン 3 では、新しい JSON 形式が導入されました。WCF Data Services クライアントは、この JSON 形式のみをサポートしています。(古い JSON ペイロードには"__metadata"
、上部に や のようなものがあり"d":{...}
ます。新しい JSON 形式では"odata.metadata"
、"odata.type"
、 などのようなものが表示されます。)
まず、バージョン 5.1 以降の WCF Data Sevrices クライアント ライブラリ (Visual Studio には古いバージョンが付属しています) と、Visual Studio で "サービス参照の追加" を機能させるツールの更新バージョンがあることを確認してください。
最新のツール インストーラーは、http: //www.microsoft.com/en-us/download/details.aspx?id=35840からダウンロードできます。
インストールしたら、NuGet パッケージ マネージャー コンソールで次のコマンドを発行して、最新バージョンの WCF Data Services クライアントにアップグレードすることをお勧めします。
Install-Package Microsoft.Data.Services.Client
最新のクライアント ライブラリにアップグレードすると、クライアントで JSON を問題なく使用できるようになります。Visual Studio でプロジェクトを右クリックし、[サービス参照の追加] を選択して、サービスのメタデータ ドキュメントの URL を入力します。v5.1 以降では、JSON をサポートするために必要なサービスの完全なモデルがプルダウンされます。
「サービス参照の追加」は、 のサブクラスを自動生成しDataServiceContext
ます。(Visual Studio のソリューション エクスプローラーで [すべてのファイルを表示] を選択し、サービス参照の背後にあるコードを展開すると、この生成されたコードを確認できます。) たとえば、 に対して [サービス参照の追加] を実行するとhttp://services.odata.org/V3/OData/OData.svc/$metadata
、クライアント ライブラリはクラスを生成します。と呼ばれるDemoService
。直接ではなくその派生クラスを使用するDataServiceContext
と、 を呼び出すことができます.Format.UseJson()
。例えば:
var context = new DemoService(new Uri("http://services.odata.org/V3/OData/OData.svc");
context.Format.UseJson();