【问题标题】:Configuring NHibernate second level caching in an MVC app在 MVC 应用程序中配置 NHibernate 二级缓存
【发布时间】:2011-06-18 17:43:12
【问题描述】:

我有一个使用 NHibernate 的 MVC3 应用程序。一切都很顺利,直到我开始尝试添加二级缓存。浏览网页几个小时后,我终于找到了我认为正确的 dll(NHibernate.Caches.SysCache2.dll)并将其添加到我的项目中。

但是,我找不到任何有关使用 MVC 应用程序配置它的帮助。所有示例都指的是拥有一个 App.config 文件(我认为这是针对 Web 表单的)。我是一名正在学习 .Net 的 Java 开发人员,所以我不太熟悉如何安装所有内容。

有人能指出我正确的方向吗?我正在使用 xml hibernate (hbm) 文件。

谢谢。

【问题讨论】:

    标签: asp.net-mvc nhibernate caching


    【解决方案1】:

    我正在使用 MVC3 和 NHibernate.Caches.SysCache.dll 这样的二级缓存...

    1st,像这样在你的 web.config 文件中添加一个配置部分

    <configSections>
        <section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=6876f2ea66c9f443"/>
    </configSections>
    

    在您的配置部分下的 web.config 中添加一个 syscache 部分,如下所示:

    <syscache>
        <cache region="SomeCustomNameRegion" expiration="86400" priority="5" />
    </syscache>
    

    在我的 hibernate.cfg.xml 文件中,我添加了以下属性:

    <property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>
    <property name="cache.use_query_cache">true</property>
    <property name="cache.use_second_level_cache">true</property>
    

    我正在使用 FluentNhibernate 创建我的映射并添加它以支持缓存:

    public CustomerClassMap()
    {
        Cache.NonStrictReadWrite();
        Id(x => x.Id);
        Map(x => x.Name);
        //... more properties
    }
    

    然后在我的数据访问代码中,对于我想要缓存的查询,我有类似的内容:

    public IEnumerable<Customer> GetAllCached()
    {
        return Session.CreateCriteria(typeof(Customer))
                .SetCacheable(true)
                .SetCacheRegion("SomeCustomNameRegion")
                .SetCacheMode(CacheMode.Normal)
                .AddOrder(Order.Desc("CreateDate"))
                .List<Customer>();
    }
    

    这里有一些有用的链接可以让您了解更多细节。没有什么关于 MVC3 的特定内容需要您担心,据我所知,大部分内容与早期版本的 NHibernate 没有变化。

    http://www.klopfenstein.net/lorenz.aspx/using-syscache-as-secondary-cache-in-nhibernate

    http://blog.symbiotic-development.com/2008/02/27/more-configuring-nhibernate-caches/

    【讨论】:

    • 太好了——谢谢。工作完美。我仍然在 web.config 中为 syscache 元素收到一些架构消息,但它们只是警告。再次感谢。
    • 可能值得指出的是,如果您使用 SysCache2,那么您必须将配置元素命名为“syscache2”而不是“syscache”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多