带有字符串参数的 OData 未绑定函数似乎不起作用 - OData DotNetCore
OData unbound function with a string parameter does not seem to work - OData DotNetCore
我第一次研究用于 .NETCORE 的 OData,但似乎无法实现一些非常简单的事情。
我创建了一个未绑定的函数,它 returns 一个字符串并接受一个字符串参数,我已经阅读了多个文档并准确地复制了他们在那里所做的事情(除了,我将 int 参数替换为字符串)。
所以我完成了以下设置(我使用的是 .NET 5 / API):
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapRazorPages();
endpoints.MapHub<DataHub>("/dataHub"); // map hub enpoint
endpoints.MapODataRoute("api", "api", GetEdmModel()); // oData endpoints
});
private IEdmModel GetEdmModel()
{
var builder = new ODataConventionModelBuilder();
builder.Function("GetClients").Returns<string>().Parameter<string>("UserId");
return builder.GetEdmModel();
}
ApiController:(但控制器应该无关紧要,因为它是一个未绑定的函数)
[HttpGet]
[ODataRoute("GetClients(UserId={UserId})")]
public string GetClients([FromODataUri] string UserId)
{
return string.Empty;
}
我试过的端点:
- localhost/GetClients(UserId=abc)
- localhost/api//GetClients(UserId=abc)
当我用 int
替换 string
时,出于某种原因,它确实有效..
必须在单引号中提供字符串参数:
localhost/api/GetClients(UserId='abc')
我第一次研究用于 .NETCORE 的 OData,但似乎无法实现一些非常简单的事情。
我创建了一个未绑定的函数,它 returns 一个字符串并接受一个字符串参数,我已经阅读了多个文档并准确地复制了他们在那里所做的事情(除了,我将 int 参数替换为字符串)。
所以我完成了以下设置(我使用的是 .NET 5 / API):
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapRazorPages();
endpoints.MapHub<DataHub>("/dataHub"); // map hub enpoint
endpoints.MapODataRoute("api", "api", GetEdmModel()); // oData endpoints
});
private IEdmModel GetEdmModel()
{
var builder = new ODataConventionModelBuilder();
builder.Function("GetClients").Returns<string>().Parameter<string>("UserId");
return builder.GetEdmModel();
}
ApiController:(但控制器应该无关紧要,因为它是一个未绑定的函数)
[HttpGet]
[ODataRoute("GetClients(UserId={UserId})")]
public string GetClients([FromODataUri] string UserId)
{
return string.Empty;
}
我试过的端点:
- localhost/GetClients(UserId=abc)
- localhost/api//GetClients(UserId=abc)
当我用 int
替换 string
时,出于某种原因,它确实有效..
必须在单引号中提供字符串参数:
localhost/api/GetClients(UserId='abc')