비슷한 문제가 발생한 사람에게서 아이디어를 얻고 싶습니다. 어떻게 해결책을 찾았습니까?최대 30 개 요청으로 RavenDb 쿼리 오류
기본적으로 RavenDB에 저장된 약 10,000 개의 문서가 있습니다. 또한 사용자가 해당 문서에 대해 필터 및 검색을 수행 할 수 있어야합니다. RavenDb에는 최대 1024 페이지 크기가 있음을 알고 있습니다. 따라서 필터와 검색 기능이 작동하려면 페이징을해야합니다. 나는 그것을 주위 using
키워드를 포장하고 명시 적으로 어떤 성공 RavenDb 모든 호출 후 Dispose
를 호출하여 세션을 폐기의 여러 가지 방법을 시도
The maximum number of requests (30) allowed for this session has been reached.
:하지만 내 솔루션은 나에게 다음과 같은 오류를 제공합니다.
누구든지이 문제를 해결하는 방법을 알고 있습니까? 이런 종류의 시나리오에서 가장 좋은 방법은 무엇입니까?
var pageSize = 1024;
var skipSize = 0;
var maxSize = 0;
using (_documentSession)
{
maxSize = _documentSession.Query<LogEvent>().Count();
}
while (skipSize < maxSize)
{
using (_documentSession)
{
var events = _documentSession.Query<LogEvent>().Skip(skipSize).Take(pageSize).ToList();
_documentSession.Dispose();
//building finalPredicate codes..... which i am not providing here....
results.AddRange(events.Where(finalPredicate.Compile()).ToList());
skipSize += pageSize;
}
}
andrew 사용자가 1024 개 이상의 문서를 한 번에 볼 수 있어야합니까? '_documentSession'이 어떻게 생성되었는지 보여주는 코드를 게시 할 수 있습니까? – wal
이 줄에서'ToList()'를 호출하는 것으로 나타났습니다.'var events = _documentSession' <- 이것은 1024 *를 꺼내고 나서 당신의 조건이 적용될 것입니다. 필터를 쿼리에 전달하려고 시도해야합니다. – wal
좋은 점은 쿼리를 최적화한다는 것입니다. 하지만 실제로 루트 문제를 해결하지는 않을 것이라고 생각합니다. – developer