Как использовать метод AsQueryable асинхронно с MongoDb С# Driver 2.1?
В выпуске версии 2.1 драйвера MongoDb С# недавно был введен метод AsQueryable
, но я изо всех сил пытаюсь найти способ его асинхронного вызова.
С Entity Framework это будет достигнуто с помощью QueryableExtensions.ToListAsync
, но я не могу увидеть эквивалент с помощью MongoDb.
Поэтому задан метод репозитория, например:
public IQueryable<MyType> GetFiltered(Expression<Func<MyType, bool>> predicate)
{
return Database.GetCollection<MyType>(typeof(MyType).Name).AsQueryable().Where(predicate);
}
Я хотел сделать что-то вроде
var myTypes = await MyRepository.GetFiltered(t => t.Id == 1).ToListAsync();
Возможно ли это?
Ответы
Ответ 1
Вы возвращаете неправильный тип из функции GetFiltered
. Он должен возвращать IMongoQueryable<MyType>
вместо IQueryable<MyType>
:
public IMongoQueryable<MyType> GetFiltered(Expression<Func<MyType, bool>> predicate)
{
return Database.GetCollection<MyType>(typeof(MyType).Name).AsQueryable()
.Where(predicate);
}
Затем вы можете успешно назвать это как:
var myTypes = await MyRepository.GetFiltered(t => t.Id == 1).ToListAsync();