刚刚找到了与RavenDB中缓存的facet查询相关的错误。
我找到了设置攻击性缓存的代码行,但仅限于给定的会话。在此会话中,似乎代码只获取“FacetSetup”文档而不在facet上执行查询。但是,我已经确认,当给定的代码行被注释掉时,我会收到当前的facet计数,当我恢复注释并进行更新时,我会收到过时的facet计数。
我的问题是:这条线实际上告诉Raven缓存什么?
/// <summary>
/// Gets all the facet names from the main facet document.
/// That way, we know all the possible facets to query over.
/// We will execute a facet query for each facet in the FacetSetup
/// </summary>
private IEnumerable<string> GetFacetNamesFromFacetSetup(IDocumentStore store, string facetDocumentName)
{
IList<string> facetFromDocument = new List<string>();
using (IDocumentSession docSession = store.OpenSession())
{
//The line below here!!
docSession.Advanced.DocumentStore.AggressivelyCacheFor(TimeSpan.FromMinutes(30));
FacetSetup facetSetup = docSession.Load<FacetSetup>(facetDocumentName);
foreach (Facet facet in facetSetup.Facets)
{
facetFromDocument.Add(facet.Name);
}
}
return facetFromDocument;
}
答案 0 :(得分:0)
AggressivelyCacheFor是文档存储的全局。 它返回一个IDisposable。 在您处置它之前,所有操作都将被急切地缓存。