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 数据服务操作提供程序中,我相信这可以通过制作ServiceAction.BindingParameter.ParameterTypea CollectionResourceType(通过 获得ResourceType.GetCollectionResourceType(/* notification type */))来实现。(虽然我还没有尝试过。)

于 2013-05-10T20:13:54.993 回答
0

我知道这是一个老问题,但我今天早些时候遇到了一个解决方案。(我没有这个问题,但我发现了这个问题并记得阅读了解决方案 - 为什么不提供两者之间的链接?)

在http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/ODataActionsSample/ODataActionsSample.sln有一个例子

查看NonBindableActionRoutingConvention.csNonBindableActionsController.cs文件以了解您需要做什么。

于 2013-07-17T07:42:21.167 回答