用于在ASP.NET OData Controller中使用指定键获取单个值的查询选项

时间:2015-05-03 19:19:11

标签: c# asp.net asp.net-mvc odata

当我使用默认的“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会为获取特定值的方法添加查询选项?

1 个答案:

答案 0 :(得分:1)

在您的情况下,您可以在方法中使用[Queryable]属性,并删除参数中的ODataQueryOptions,OData将为您的结果应用此属性。

或使用SingleResult:

SingleResult result = SingleResult.Create(TestModels.AsQueryable());