如何使用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,...)
答案 0 :(得分:2)
您确定您的实体位于二级缓存中。通常,您必须在事务中进行工作和查询才能使第二级缓存执行任何操作。