具有未绑定函数的Odata:在Odata路径中找不到相关的实体集或singleton
本文关键字:Odata 找不到 实体 singleton 绑定 函数 路径 | 更新日期: 2023-09-27 18:06:56
我希望在ProductController中创建一个未绑定的函数,该函数返回完全不同的实体(与Product无关(。
[EnableQuery]
public class ProductsController : ODataController
{
[HttpGet]
[ODataRoute("InvokeMyUnBoundFunction(Id={id})")]
public IHttpActionResult InvokeMyUnBoundFunction(int id)
{
TestUnBound testObj= new TestUnBound();
testObj.Name = "Test" + id;
return Ok(testObj);
}
}
我的webApiConfig是
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Product>("Products");
builder.EntitySet<TestUnBound>("TestUnBounds"); //Its not related to Product.
builder.Function("InvokeMyUnBoundFunction").Returns<TestUnBound>().Parameter<int>("Id");
但当我调用http://localhost:port/api/odata/InvokeMyUnBoundFunction(Id=1234(我收到一条类似的错误消息
"在OData中找不到相关的实体集或singleton路径需要相关的实体集或singleton来序列化有效载荷。">
我错过了什么概念吗?
您应该使用
ReturnsFromEntitySet<TestUnBound>
指令
Returns<TestUnBound>
在OData v4中,将函数声明更改为:
builder.Function("InvokeMyUnBoundFunction").ReturnsCollectionFromEntitySet<TestUnBound>().Parameter<int>("Id");
而不是如答案所建议的CCD_ 1。