Pytanie pierwotnie zadano pod http://entityframework.codeplex.com/discussions/399499#post928179.IQueryable nie implementuje IDbAsyncEnumerable
Dzień dobry! Proszę powiedzieć, czy to niewłaściwe miejsce, aby opublikować to pytanie.
Mam zapytanie co następuje:
IQueryable<Card> cardsQuery =
dataContext.Cards
.Where(predicate)
.OrderByDescending(kc => kc.SendDate)
.AsQueryable();
Potem spróbuj:
Task<Card[]> result = cardsQuery.ToArrayAsync();
I wtedy wyjątek wzrasta:
The source IQueryable doesn't implement IDbAsyncEnumerable<Models.Card>
Używam zmodyfikowana wersja "EF 5.x DbCotext generator".
Jak tego uniknąć?
UPDATE
Ważna uwaga jest taka, że mam sposób wytwarzania IQuerayble<Card>
następująco:
class Repository {
public IQueryable<Card> GetKudosCards(Func<Card, bool> predicate) {
IEnumerable<KudosCard> kudosCards = kudosCardsQuery.Where(predicate);
return kudosCards
.OrderByDescending(kc => kc.SendDate)
.AsQueryable();
}
}
Arthur (na http://entityframework.codeplex.com/discussions/399499#post928179) ma rację. Istnieje inna operacja między IQueryable <> i ToArrayAsync. Jest ODataQueryOptions.ApplyTo z pakietu OData. To materializuje IQueryable zgodnie z parametrami OData żądania HTTP. Mój kod jest zsynchronizowany, gdy ApplyTo jest zsynchronizowany, prawda? –
Myślę, że otrzymujesz to, próbując napisać test. Jeśli nie chcesz zmieniać kodu produkcyjnego, wykonaj następujące czynności: http://msdn.microsoft.com/en-us/data/dn314429.aspx # async – Rikard