OData v4:如何在绑定函数上进行$ select工作

时间:2015-03-24 22:06:25

标签: .net odata

使用oData v4(特别是Microsoft.AspNet.Odata 5.3.0和Microsoft.Odata.Core 6.7.0),我的查询运算符,特别是$ select,即使我已经声明了函数,也会被忽略。函数为IsComposable = true。

有关如何使此方案有效的任何建议吗?我主要对$ filter和$ select感兴趣。

-Max

详细信息(基于https://github.com/OData/ODataSamples中的FunctionSamples)

尝试查询: http://localhost:9010/odata/Products/Default.Top10()?$ select =姓名

预期回复(摘录)

{
Name: "Product 48"
}

实际回复(摘录)

{
Id: 48,
Name: "Product 48",
Price: 986.2794056470876
}

功能声明:

// Function bound to a collection
// Returns the top 10 product, a collection
productType.Collection
   .Function("Top10")
   .ReturnsCollectionFromEntitySet<Product>("Products")
   .IsComposable = true;

控制器:

// Returns the top ten most expensive products
[HttpGet]
public IHttpActionResult Top10()
{
    var retval = _data.Values.OrderByDescending(p => p.Price).Take(10).ToList();

    return Ok(retval);
}

1 个答案:

答案 0 :(得分:3)

事实证明我需要将控制器方法标记为[EnableQuery]。