AsQueryable 메서드를 MongoDb C# Driver 2.1과 비동기적으로 사용하려면 어떻게 해야 합니까?
MongoDb C# 드라이버 버전 2.1은 최근에 이 방법을 다시 도입했습니다.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();
이것이 가능합니까?
다음에서 잘못된 유형을 반환하는 중입니다.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();
새로운 버전의 MongoDB 드라이버 업데이트를 위해 나중에 게시합니다.
최신 버전의 MongoDB에서는 비동기식으로 호출할 수 있습니다.MongoDB를 포함해야 합니다.드라이버.Linq:
using MongoDB.Driver.Linq;
var myTypes = await Database.GetCollection<MyType>().AsQueryable()
.Where(t => t.Id == 1).ToListAsync();
저는 승인된 답변에 찬성표를 던졌습니다.
추상화해야 하는 경우IMongoQueryable
이 작은 내선 도우미가 유용할 수도 있는 호출자의 인터페이스.
public static class MongoQueryableMixIn
{
public static Task<List<T>> ToMongoListAsync<T>(this IQueryable<T> mongoQueryOnly)
{
return ((IMongoQueryable<T>) mongoQueryOnly).ToListAsync();
}
}
처음에는 전화를 해야 합니다.ToCursorAsync()
위해서IMonqoQuarable<T>
객체, 그리고 호출ToListAsync()
대기 중인 IAsyncCursor 결과의 경우:
public IMongoQueryable<MyType> GetFiltered(Expression<Func<MyType, bool>> predicate)
{
return Database.GetCollection<MyType>(typeof(MyType).Name).AsQueryable()
.Where(predicate);
}
그리고 나서.
var myTypes = await(await MyRepository.GetFiltered(t => t.Id == 1).ToCursorAsync()).ToListAsync();
애즈 조니승인된 답변에 언급된 HK, 반품 유형이 잘못되었으며 다음과 같아야 합니다.IMongoQueryable<T>
하지만, 이것이 필요한 전부는 것은 아닙니다.
을 하기 위해서.에서 비동기()를 나열하려면IMongoQueryable<T>
개체, 네임스페이스도 포함해야 합니다.using MongoDB.Driver.Linq
이제 이것은 당신이 생각하는 것이 아닙니다.IMongoQueryable<T>
인터페이스 공급자가 호출하려는 위치와 동일한 파일에 있습니다.ToListAsync(), 하지만 제 경우에는 기본 클래스가IMongoQueryable<T>
인터페이스, 그리고 나는 그것을 내 파생된 클래스에서 사용하고 싶습니다.
나는 추가해야 했습니다.using MongoDB.Driver.Linq
해당 확장 메서드에 액세스할 수 있습니다.
언급URL : https://stackoverflow.com/questions/34042367/how-do-i-use-the-asqueryable-method-asynchronously-with-mongodb-c-sharp-driver-2
'programing' 카테고리의 다른 글
유형 스크립트를 사용하여 상태 후크 사용에서 받은 배열 표시 (0) | 2023.07.02 |
---|---|
새로운 문자열을 만들지 않고 루비에서 문자열을 트리밍하는 표준 방법은 무엇입니까? (0) | 2023.07.02 |
플라이웨이를 실행하는 방법: SpringBoot 앱에서 마이그레이션 전 청소? (0) | 2023.06.27 |
R과 병합된 Excel 셀을 읽는 방법 (0) | 2023.06.27 |
ORA-00988: 암호가 없거나 잘못되었습니다. (0) | 2023.06.27 |