对复合键的OData v4 Web API支持

时间:2014-12-18 00:13:39

标签: odata asp.net-web-api2 composite-key

我正在使用WebAPI和OData v4构建OData Web服务。

我能够通过覆盖EntityRoutingConvention的SelectAction方法来获得支持组合键的服务。但是,在以前版本的OData中,这不是必需的。我个人认为它非常混乱,我觉得我正在重新发明轮子。

还有其他办法吗?

2 个答案:

答案 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