【发布时间】:2018-10-25 02:12:32
【问题描述】:
我们有使用 OData 的 WEB API。我们的控制器继承自EntitySetController,现在我们将其更改为AsyncEntitySetController
Patch、Post、Put、Get(key) 方法很容易更改,但问题在于 Get 方法。
在EntitySetController中返回IQueryable,URI中指定的过滤器被进一步应用,然后查询被执行。
但在 AsyncEntitySetController 中,它返回 IEnumerable,因此我们需要在方法中调用 ToListAsync,我担心在应用过滤器并将过滤器应用于内存集合之前未应用来自 URI 的参数或调用查询。
如何实现它的行为方式与 EntitySetController 相同,所以:
- 可查询
- 应用来自 URI 的过滤器
- 查询是以异步/等待方式调用的?
【问题讨论】:
-
你能解决这个问题吗?我们面临同样的问题
-
@NahuelPrieto:看起来像我一样。我需要真实地证明它(不幸的是,我太忙了,无法回到它),但似乎使用 QueryOptions.ApplyTo(query) where 'query' 是你的 IQueryable 你需要从中获取结果,而 'QueryOptions' 是出现在控制器实例上将应用来自 URI 的查询参数。这是关键部分,休息应该很顺利。
标签: asp.net entity-framework async-await odata