使用一个表和四个查询设置流畅的nhibernate syscache的正确方法?

时间:2010-11-05 02:40:58

标签: nhibernate fluent-nhibernate

我的场景很简单,我有1个表,大约有20个产品,我想使用Fluent NHibernate添加到2级缓存(SysCache)。我用4种不同的方式查询了这个表,所以我想我会经常在缓存中粘贴整个东西并减少数据库命中。

我的4个查询是:

  1. 分页的全部(开始,最大)
  2. 在特定日期之前或之后获取产品的日期(日期)
  3. ById(ID)
  4. 绰号(名称)
  5. 我使用下面的代码在流畅的配置中启用了SysCache,并将相应的配置添加到web.config。

    MsSqlConfiguration.MsSql2008.Cache(c => c.ProviderClass<SysCacheProvider>()
                                             .UseQueryCache())
    

    我将以下代码添加到ProductMap

    Cache.ReadWrite().Region("testregion");
    

    现在我该如何从这里开始?我是否必须为所有4个查询添加SetCachable(true)?这是正确的方法吗?

    我的一部分认为应该有一种方法来缓存All()查询,然后将上面的4个查询指向使用缓存的All()进行查询。也许我的假设是错误的,并且每个查询都需要在查询级别使用SetCachable(true)单独添加到缓存中。

    为这种情况设置缓存的正确方法是什么?

    由于

1 个答案:

答案 0 :(得分:0)

单独启用查询缓存。内置没有快捷方式。

当然你可以添加一个扩展方法,或者使用这样做的基类,但它确实不值得:批量缓存很少提高性能。