使用 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());