【发布时间】:2011-02-15 13:10:09
【问题描述】:
我有一个简单的单元测试,我使用相同的参数执行相同的 NHibernate 命名查询 2 次(每次不同的会话)。这是一个简单的 int 参数,由于我的查询是命名查询,我假设这两个调用是相同的,结果应该被缓存。
事实上,我可以在我的日志中看到结果正在被缓存,但使用不同的键。所以,我的第二个查询结果永远不会在缓存中找到。
这是我日志中的一个片段(注意键的不同之处):
(第一次查询)
调试 NHibernate.Caches.SysCache2.SysCacheRegion [(null)] - 添加新数据:key= [snipped]... 参数:['809'];命名为 参数:{}@743460424 & value=System.Collections.Generic.List`1[System.Object]
(第二次查询)
调试 NHibernate.Caches.SysCache2.SysCacheRegion [(null)] - 添加新数据:key=[snipped]... 参数:['809'];命名为 参数:{}@704749285 & value=System.Collections.Generic.List`1[System.Object]
我已将 NHibernate 设置为使用查询缓存。我将这些查询设置为 cacheable=true。不知道还能去哪里看。有人有什么建议吗?
谢谢
-迈克
【问题讨论】:
标签: nhibernate second-level-cache