如何在NHibernate.Search中使用二级缓存

时间:2010-02-14 17:32:38

标签: c# nhibernate nhibernate.search

如何使用NHibernate.Search进行二级缓存?

我尝试在FullTextQuery上启用SetCacheable,但它不起作用。

        var session = Search.CreateFullTextSession(database.Session);

        session.CacheMode = CacheMode.Normal;

        var textQuery = session.CreateFullTextQuery(query, new[] { typeof(Job) });

        textQuery.SetCacheable(true);
        textQuery.SetCacheRegion("Job");

        var jobs = textQuery.List<Job>();

        return jobs;

对于所有其他标准查询,缓存效果很好但是使用FullTextQueries,它没有,NHibernate.Search仍然访问我的数据库。

请注意,NHibernate.Search生成的查询是 SELECT ... WHERE EntityId IN(Id1,Id2,Id3,...)

1 个答案:

答案 0 :(得分:2)

您确定您的实体位于二级缓存中。通常,您必须在事务中进行工作和查询才能使第二级缓存执行任何操作。