只是想从遇到类似问题的任何人那里获得一些想法,以及你们是如何提出解决方案的。
基本上,我们在 RavenDB 中存储了大约 10K 文档。我们需要允许用户对这些文档执行过滤和搜索的能力。我知道 RavenDb 中的最大页面大小为 1024。因此,为了使过滤器和搜索能够正常工作,我需要自己进行分页。但我的解决方案给了我以下错误:
已达到此会话允许的最大请求数 (30)。
我尝试了许多不同的方法来处理会话,方法是将其包装在using
关键字周围,并Dispose
在每次调用 RavenDb 后显式调用,但均未成功。
有谁知道如何解决这个问题?这种情况的最佳做法是什么?
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;
}
}