2015-12-02 9 views
12

Il rilascio della versione 2.1 del driver MongoDb C# ha recentemente reintrodotto il metodo AsQueryable, ma non riesco a trovare un modo per chiamarlo in modo asincrono.Come utilizzare il metodo AsQueryable in modo asincrono con MongoDb C# Driver 2.1?

Con Entity Framework questo sarebbe stato ottenuto utilizzando QueryableExtensions.ToListAsync ma non riesco a vedere un equivalente utilizzando MongoDb.

Quindi, dato un metodo repository come ad esempio:

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

ho voluto fare qualcosa di simile

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

è possibile?

risposta

11

Si sta restituendo il tipo errato dalla funzione GetFiltered. Va restituisce un IMongoQueryable<MyType> invece di IQueryable<MyType>:

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

È quindi possibile chiamare con successo come:

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