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