1

特定のエンティティまたはインスタンスにバインドされていない OData アクションを持つことは可能ですか? コレクションに対して呼び出すことができますか? そのような...

http://server:port/MyOdataService/Notifications/ClearAll

ここで、Notifications は ResourceSet であり、ClearAll はアクションです。これは、C# の静的メソッドに似ています。

明らかな回避策は、「グローバル」アクションまたは古い ServiceOperation を使用することですが、操作の一部をそれほど高い範囲に限定したり、面倒な名前の使用を強制したりしたくありません。

4

2 に答える 2

2

OData プロトコル レベルでは、アクション パラメーターをエンティティのコレクションにバインドすることは有効です。たとえば、Notificationsエンティティ セットがタイプのエンティティで構成されている場合MyNamespace.Notification、アクションのバインディング パラメータのタイプは になりCollection(MyNamespace.Notification)ます。

WCF Data Services アクション プロバイダー内では、ServiceAction.BindingParameter.ParameterTypea CollectionResourceType(経由で取得ResourceType.GetCollectionResourceType(/* notification type */)) を作成するだけでこれが可能になると思います。(ただし、これは試していません。)

于 2013-05-10T20:13:54.993 に答える
0

これは古い質問であることは知っていますが、今日、これに対する解決策に出くわしました。(問題はありませんが、この質問を見つけて、解決策を読んだことを思い出しました-2つの間のリンクに貢献してみませんか?)

http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/ODataActionsSample/ODataActionsSample.slnに例があります。

何をする必要があるかについては、 ファイルと ファイルを参照してくださいNonBindableActionRoutingConvention.csNonBindableActionsController.cs

于 2013-07-17T07:42:21.167 に答える