Nat*_*ate 10 c# odata asp.net-web-api asp.net-web-api-routing asp.net-web-api-odata
我收到以下错误:
控制器"客户端"中操作"GetClients"上的路径模板"GetClients()"不是有效的OData路径模板.找不到"GetClients"细分受众群的资源.
我的控制器方法看起来像这样
public class ClientsController : ODataController
{
[HttpGet]
[ODataRoute("GetClients(Id={Id})")]
public IHttpActionResult GetClients([FromODataUri] int Id)
{
return Ok(_clientsRepository.GetClients(Id));
}
}
Run Code Online (Sandbox Code Playgroud)
我的WebAPIConfig文件有
builder.EntityType<ClientModel>().Collection
.Function("GetClients")
.Returns<IQueryable<ClientModel>>()
.Parameter<int>("Id");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel());
Run Code Online (Sandbox Code Playgroud)
我希望能够像这样调用odata rest api:
http://localhost/odata/GetClients(Id=5)
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?
Fen*_*hao 11
您甚至不需要添加这样的函数来获取实体.
builder.EntitySet<ClientModel>("Clients")
Run Code Online (Sandbox Code Playgroud)
是你所需要的全部.
然后将您的行动写为:
public IHttpActionResult GetClientModel([FromODataUri] int key)
{
return Ok(_clientsRepository.GetClients(key).Single());
}
Run Code Online (Sandbox Code Playgroud)
要么
这是有效的.以上不起作用:
public IHttpActionResult Get([FromODataUri] int key)
{
return Ok(_clientsRepository.GetClients(key).Single());
}
Run Code Online (Sandbox Code Playgroud)
然后是Get请求
http://localhost/odata/Clients(Id=5)
Run Code Online (Sandbox Code Playgroud)
要么
http://localhost/odata/Clients(5)
Run Code Online (Sandbox Code Playgroud)
将工作.
更新:使用未绑定的函数返回许多ClientModel.
以下代码适用于v4.对于v3,您可以使用操作.
builder.EntitySet<ClientModel>("Clients");
var function = builder.Function("FunctionName");
function.Parameter<int>("Id");
function.ReturnsCollectionFromEntitySet<ClientModel>("Clients");
Run Code Online (Sandbox Code Playgroud)
在控制器中添加一个方法,如:
[HttpGet]
[ODataRoute("FunctionName(Id={id})")]
public IHttpActionResult WhateverName(int id)
{
return Ok(_clientsRepository.GetClients(id));
}
Run Code Online (Sandbox Code Playgroud)
发送请求:
GET ~/FunctionName(Id=5)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18247 次 |
| 最近记录: |