我创建了一个暴露三种不同GET方法的OData Controller。
// http://odata/Companies
IQueryable<Company> Get()
// http://odata/Companies(1)
SingleResult<Company> Get([FromODataUri] key)
// http://odata/Companies(1)/Persons
IQueryable<Persons> GetPersons([FromODataUri] key)
使用这种方法,OData Links约定可以很好地工作,但是帮助生成器只创建了一个方法Get()
,而它跳过 Get{key}
和 {{1 }}
如果我以这种方式更改方法:
GetPersons{key}
生成帮助但是Web Api OData不再起作用,因为框架正在寻找“关键”参数。
答案 0 :(得分:0)
如果您使用的是OData v4(System.Web.OData.dll而不是System.Web.Http.OData.dll),则可以通过属性路由解决此问题:
[ODataRoute("Companies({companyKey})/Persons")]
IQueryable<Persons> GetPersons([FromODataUri] companyKey)
有关属性路由的详细信息,您可以参考https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataAttributeRoutingSample/。