0

RavenDB にキャッシュされているファセット クエリと思われるものに関連するバグを追跡しました。

特定のセッションに対してのみ、積極的なキャッシュを設定するコード行を見つけました。このセッションでは、コードは「FacetSetup」ドキュメントのみを取得しており、ファセットでクエリを実行していないようです。ただし、特定のコード行をコメントアウトすると現在のファセット数が返され、コメントを元に戻して更新すると古いファセット数が返されることを確認しました。

私の質問は次のとおりです。この行は実際にレイヴンにキャッシュするように何を伝えていますか?

    /// <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;
    }
4

1 に答える 1

0

AggressivelyCacheFor は、ドキュメント ストアに対してグローバルです。そして、IDisposable を返します。破棄するまで、すべての操作は熱心にキャッシュされます。

于 2013-09-20T08:43:05.340 に答える