2015-12-02 36 views
12

Wydanie wersji 2.1 sterownika MongoDb C# niedawno przywróciło metodę AsQueryable, ale staram się znaleźć sposób na wywołanie jej asynchronicznie.Jak używać asynchronicznie metody AsQueryable z MongoDb C# Driver 2.1?

Z Entity Framework można to osiągnąć za pomocą QueryableExtensions.ToListAsync, ale nie widzę odpowiednika za pomocą MongoDb.

Więc biorąc pod uwagę metodę repozytorium takich jak:

public IQueryable<MyType> GetFiltered(Expression<Func<MyType, bool>> predicate) 
{ 
     return Database.GetCollection<MyType>(typeof(MyType).Name).AsQueryable().Where(predicate); 
} 

chciałem zrobić coś podobnego

var myTypes = await MyRepository.GetFiltered(t => t.Id == 1).ToListAsync(); 

to jest możliwe?

Odpowiedz

11

Powracasz nieprawidłowy typ z funkcji GetFiltered. Należy zwrócenie IMongoQueryable<MyType> zamiast IQueryable<MyType>:

public IMongoQueryable<MyType> GetFiltered(Expression<Func<MyType, bool>> predicate) 
{ 
    return Database.GetCollection<MyType>(typeof(MyType).Name).AsQueryable() 
     .Where(predicate); 
} 

Następnie można z powodzeniem nazwać jak:

var myTypes = await MyRepository.GetFiltered(t => t.Id == 1).ToListAsync();