使用 ASP.NET OData 控制器中的指定键获取单个值的查询选项
Query options for getting single value with the specified key in ASP.NET OData Controller
当我使用默认 "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());
但是,如果此方法 returns 特定 TestModel
而不是 IQueryable<TestModel>
,如何使用它们返回特定值?使用查询选项来获取单个值是否有意义?因为我没有在 Internet 上找到任何使用查询选项获取特定值的示例。如果它没有意义,那么为什么 Visual Studio 向获取特定值的方法添加查询选项?
在您的情况下,您可以只在方法中使用 [Queryable] 属性,并删除参数中的 ODataQueryOptions,OData 会将其应用于您的结果。
或者使用 SingleResult:
SingleResult result = SingleResult.Create(TestModels.AsQueryable());
当我使用默认 "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());
但是,如果此方法 returns 特定 TestModel
而不是 IQueryable<TestModel>
,如何使用它们返回特定值?使用查询选项来获取单个值是否有意义?因为我没有在 Internet 上找到任何使用查询选项获取特定值的示例。如果它没有意义,那么为什么 Visual Studio 向获取特定值的方法添加查询选项?
在您的情况下,您可以只在方法中使用 [Queryable] 属性,并删除参数中的 ODataQueryOptions,OData 会将其应用于您的结果。
或者使用 SingleResult:
SingleResult result = SingleResult.Create(TestModels.AsQueryable());