我正在使用WebAPI和OData v4构建OData Web服务。
我能够通过覆盖EntityRoutingConvention的SelectAction方法来获得支持组合键的服务。但是,在以前版本的OData中,这不是必需的。我个人认为它非常混乱,我觉得我正在重新发明轮子。
还有其他办法吗?
答案 0 :(得分:5)
使用属性路由。
一个例子:
型号:
public class Product
{
[Key]
public int ID { get; set; }
[Key]
public string Name { get; set; }
}
使用复合键识别实体的控制器方法:
[EnableQuery]
[ODataRoute("Products(ID={key1},Name={key2})")]
public IHttpActionResult Get([FromODataUri] int key1, [FromODataUri] string key2)
{
// You business logic for retrieving the entity from your storage using the two keys and return
}
申请样本:
GET http://host/service/Products(ID=1,Name='Car')
无需覆盖路由约定。
答案 1 :(得分:1)
您可以在开箱即用前缀“ key”的情况下执行此操作:
$
我刚刚检查了Microsoft.AspNet.OData v7.0.1