【发布时间】:2012-10-17 17:33:41
【问题描述】:
这个问题最初是在http://entityframework.codeplex.com/discussions/399499#post928179 提出的。
美好的一天!请告诉我发布此问题的位置是否错误。
我有一个查询如下:
IQueryable<Card> cardsQuery =
dataContext.Cards
.Where(predicate)
.OrderByDescending(kc => kc.SendDate)
.AsQueryable();
那我试试:
Task<Card[]> result = cardsQuery.ToArrayAsync();
然后异常上升:
The source IQueryable doesn't implement IDbAsyncEnumerable<Models.Card>
我使用“EF 5.x DbCotext 生成器”的修改版本。
如何避免?
更新
重要的是我有方法产生IQuerayble<Card>如下:
class Repository {
public IQueryable<Card> GetKudosCards(Func<Card, bool> predicate) {
IEnumerable<KudosCard> kudosCards = kudosCardsQuery.Where(predicate);
return kudosCards
.OrderByDescending(kc => kc.SendDate)
.AsQueryable();
}
}
【问题讨论】:
-
亚瑟(entityframework.codeplex.com/discussions/399499#post928179)是对的。 IQueryable 和 ToArrayAsync 之间还有另一个操作。它是 OData 包中的 ODataQueryOptions.ApplyTo。它根据 HTTP 请求的 OData 参数具体化 IQueryable。所以,我的代码是同步的,而 ApplyTo 是同步的,对吧?
-
我认为您在尝试编写测试时会遇到这种情况。如果您不想更改生产代码,请按照以下步骤操作:msdn.microsoft.com/en-us/data/dn314429.aspx#async
标签: entity-framework