AspnetCore Odata如何创建调用等待查询的异步操作

时间:2019-02-08 13:23:01

标签: c# asp.net-core odata microsoft-odata

这是我的ODATA控制器,具有ODATA动作。

   public class MyController : ODataController
{
    private readonly Repository_repo;

    public MyController(IRepository repo)
    {
        _repo = repo;
    }

    [EnableQuery(PageSize = 10, EnsureStableOrdering = false)]
    public IActionResult Get()
    {
        var data = _repo.GetData();
        return Ok(data)

    }

}

这是我的存储库方法。

   public IQueryable<DataModel> GetData() => _db.DbSet.Select(data=> new DataModel
    {
        // Implement model
    }).

现在,我了解将回购中的GetData方法设为异步是没有意义的,因为这只是返回一个可查询的查询,直到调用它的枚举器后该查询才被执行。

因此进行异步处理的部分是操作方法。我如何将其设为异步等待呼叫?据我所知,Odata EnableQuery方法期望使用IQueryable。

1 个答案:

答案 0 :(得分:0)

您不需要。动作方法只是请求管道的一部分;它不是异步并不排除管道中的其他事物是异步的。处理OData查询的中间件实际上是将查询发送到数据库的东西,并且很有可能做到异步(我对源代码不熟悉,无法确切地说)。无论如何,仅当您实际上在执行异步操作时,您的操作才需要是异步的。否则,不用担心。