是否可以将OData Action绑定到特定实体或实例,而是可以在集合上调用?比如...
http://server:port/MyOdataService/Notifications/ClearAll
其中Notifications是ResourceSet,ClearAll是一个动作。我把它比作C#中的静态方法,有点。
显而易见的解决方法是使用“全局”操作或旧的ServiceOperation,但我宁愿不要将某些操作放在高位或强行使用繁琐的名称。
答案 0 :(得分:2)
在OData协议级别,将一个动作参数绑定到一组实体是有效的。例如,如果Notifications
实体集由类型为MyNamespace.Notification
的实体组成,则该操作的绑定参数的类型为Collection(MyNamespace.Notification)
。
在WCF数据服务操作提供程序中,我认为只需将ServiceAction.BindingParameter.ParameterType
设为CollectionResourceType
(通过ResourceType.GetCollectionResourceType(/* notification type */)
获取)即可。 (虽然我没有试过这个。)
答案 1 :(得分:0)
我知道这是一个老问题,但我今天早些时候遇到过这个问题。 (我没有这个问题,但我发现了这个问题并回想起解决方案 - 为什么不提供两者之间的联系?)
有一个例子查看NonBindableActionRoutingConvention.cs
和NonBindableActionsController.cs
文件,了解您需要做什么。