OData v4 Web API对复合密钥的支持
我正在使用WebAPI和odatav4构建一个odataweb服务 通过重写EntityRoutingConvention的SelectAction方法,我能够让服务支持复合键。然而,在OData的早期版本中,这是不需要的。我个人认为这是相当混乱的,我觉得我是在重新发明轮子 还有其他方法吗?使用属性路由 例如: 型号: 使用复合键识别实体的控制器方法: 请求样本:OData v4 Web API对复合密钥的支持,odata,asp.net-web-api2,composite-key,Odata,Asp.net Web Api2,Composite Key,我正在使用WebAPI和odatav4构建一个odataweb服务 通过重写EntityRoutingConvention的SelectAction方法,我能够让服务支持复合键。然而,在OData的早期版本中,这是不需要的。我个人认为这是相当混乱的,我觉得我是在重新发明轮子 还有其他方法吗?使用属性路由 例如: 型号: 使用复合键识别实体的控制器方法: 请求样本: 无需覆盖路由约定。您可以使用开箱即用的前缀“key”来执行此操作: [EnableQuery] public IHttpAction
无需覆盖路由约定。您可以使用开箱即用的前缀“key”来执行此操作:
[EnableQuery]
public IHttpActionResult Get([FromODataUri] int keyID, [FromODataUri] string keyName)
{
// You business logic for retrieving the entity from your storage using the two keys and return
}
我刚刚查看了Microsoft.AspNet.OData v7.0.1
你可以找到他们的来源谢谢,我会试试这个。这是否也支持导航属性<代码>[ODataRoute(“Products(ID={key1},Name={key2})/NavigationProperty”)@FrancescoFerraioli是的。这对我来说很有效,但你有文档支持吗?将其添加到您的答案中是个好主意。
[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')
[EnableQuery]
public IHttpActionResult Get([FromODataUri] int keyID, [FromODataUri] string keyName)
{
// You business logic for retrieving the entity from your storage using the two keys and return
}