实体是否在查询缓存中缓存?

时间:2009-08-26 10:14:49

标签: nhibernate

我已经将nhibernate用于我的实现。涉及到大量的数据库提取,为了减少处理时间,我启动了查询缓存并在启动时加载了应用程序上的全表数据。然后linq反对它。启用了二级缓存和查询缓存。它正在工作,但是当我多次执行处理时,在我的日志文件中,我可以看到针对具有主键的缓存表的查询,并且它正在为该表中的每一行执行此操作。我认为它发生了,因为我的查询是在没有任何条件的情况下反对整个表。我不知道这是因为我的代码或任何其他问题有任何问题。当我使用较少数量的实体进行此操作时,它似乎正在工作。有谁知道这个问题?查询缓存只缓存行的主键吗?

1 个答案:

答案 0 :(得分:2)

查询缓存只会缓存查询结果的主键。来自query cache documentation

  

请注意,查询缓存不会   缓存中的任何实体的状态   结果集;它只缓存标识符   价值类型的值和结果。所以   应始终使用查询缓存   与二级相结合   高速缓存中。