当我使用默认的“demo”实现创建OData控制器时,我注意到方法中有查询选项,它获取具有特定Id的特定值:
// GET: odata/TestModels(5)
public IHttpActionResult GetTestModel([FromODataUri] int key, ODataQueryOptions<TestModel> queryOptions)
{
// validate the query.
try
{
queryOptions.Validate(_validationSettings);
}
catch (ODataException ex)
{
return BadRequest(ex.Message);
}
//return Ok<TestModel>(testModel);
return StatusCode(HttpStatusCode.NotImplemented);
}
我找不到如何使用查询选项获取单个值的信息/为了获取值列表,我们可以使用以下内容:
var results = queryOptions.ApplyTo(_testModelsRepository.TestModels.AsQueryable());
但是,如果此方法返回特定TestModel
但不返回IQueryable<TestModel>
,如何使用它们返回特定值?使用查询选项获取单个值是否有意义?因为我没有在Internet上找到任何使用查询选项获取特定值的示例。如果它没有意义,那么为什么Visual Studio会为获取特定值的方法添加查询选项?
答案 0 :(得分:1)
在您的情况下,您可以在方法中使用[Queryable]属性,并删除参数中的ODataQueryOptions,OData将为您的结果应用此属性。
或使用SingleResult:
SingleResult result = SingleResult.Create(TestModels.AsQueryable());