ホームページ  >  記事  >  バックエンド開発  >  [转]ASP.NET Web API OData で複合キーをサポート

[转]ASP.NET Web API OData で複合キーをサポート

PHP中文网
PHP中文网オリジナル
2017-06-17 16:33:571905ブラウズ

本文转自:

デフォルトの EntitySetController は複合キーをサポートしていません。したがって、複合キー モデルがある場合は、追加の作業が必要になります。これを行う方法の例を次に示します。

モデルはシンプルです:

リーリー

このモデルの odata URL は次のようになります:

リーリー

そして、この URL に対する Web API アクションに強力な型指定されたパラメーターを含めたいと考えています。

リーリー

FromODataUri モデル バインダー属性は、odata Uri 表現から clr 型への解析に使用されることに注意してください。 odata では、文字列値は「'xxx'」であり、それを「xxx」にしたいのです。

ルートを機能させるために、キー パスを解析するためのカスタム ルーティング規則を追加できます。実装例は次のとおりです:

リーリー

この規約は、エンティティ キーを処理するためのデフォルトの規約である EntityRoutingConvention から継承されます。 Base.SelectAction を呼び出すと、完全なキー パスが RouteValues に追加されます。新しい規則では、「,」が含まれているかどうかを確認し、それを複数のキーに分割し、それぞれをrouteValuesに設定します。したがって、Web API はアクションを選択するときに、それらの値を使用してどのアクションを選択するかを決定します。 「,」が見つからない場合は、基本的な対流と同じように動作します

コンベクションを登録するには、odata ルートをマッピングするときに設定する必要があります:

リーリー

0の位置にルートを登録するのは、他のデフォルトルーティング伝達よりも先に実行されるようにするためです。したがって、デフォルトの EntityRoutingConvetion はその前に実行されません。その後、ルーティング作業ができるようになります。

それでは、複合キーの URL を構築するにはどうすればよいでしょうか? 
ODataConventionModelBuilder を使用する場合、編集リンクと自己リンクを含む odata リンクについてはこれを行う必要はありません。複合キーが自動的に識別され、URI が構築されます。

ただし、場所ヘッダーのリンクを構築する必要があります。以下は、投稿リクエストを処理するための PeopleController.cs のサンプル コードです:

リーリー

お役に立てば幸いです。

以上が[转]ASP.NET Web API OData で複合キーをサポートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。