Asp.net mvc 在MVC应用程序中配置NHibernate二级缓存

Asp.net mvc 在MVC应用程序中配置NHibernate二级缓存,asp.net-mvc,nhibernate,caching,Asp.net Mvc,Nhibernate,Caching,我有一个使用NHibernate的MVC3应用程序。一切都很顺利,直到我开始尝试添加二级缓存。在网上浏览了几个小时后,我终于找到了我认为正确的dll(NHibernate.Caches.SysCache2.dll),并将其添加到我的项目中 但是,我找不到任何帮助来配置MVC应用程序。所有的例子都是指拥有App.config文件(我想这是针对Web表单的)。我是一名Java开发人员,正在学习.Net,所以我不太熟悉如何装配所有东西 有人能给我指一下正确的方向吗。我正在使用XMLHibernate(

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

但是,我找不到任何帮助来配置MVC应用程序。所有的例子都是指拥有App.config文件(我想这是针对Web表单的)。我是一名Java开发人员,正在学习.Net,所以我不太熟悉如何装配所有东西

有人能给我指一下正确的方向吗。我正在使用XMLHibernate(hbm)文件


谢谢。

我正在使用MVC3和NHibernate.Caches.SysCache.dll的二级缓存,如下所示

首先,向web.config文件中添加一个配置部分,如下所示

<configSections>
    <section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=6876f2ea66c9f443"/>
</configSections>
然后在我的数据访问代码中,对于我想要缓存的查询,我有类似的东西:

public IEnumerable<Customer> GetAllCached()
{
    return Session.CreateCriteria(typeof(Customer))
            .SetCacheable(true)
            .SetCacheRegion("SomeCustomNameRegion")
            .SetCacheMode(CacheMode.Normal)
            .AddOrder(Order.Desc("CreateDate"))
            .List<Customer>();
}
public IEnumerable GetAllCached()
{
返回会话.CreateCriteria(类型(客户))
.SetCacheable(真)
.SetCacheRegion(“SomeCustomNameRegion”)
.SetCacheMode(CacheMode.Normal)
.AddOrder(Order.Desc(“CreateDate”))
.List();
}
这里有一些有用的链接,可以更详细地了解。关于MVC3,您不需要担心任何具体的问题,据我所知,大多数都与NHibernate的早期版本保持不变


太好了,谢谢你。工作得很好。我仍然在web.config中得到一些syscache元素的模式消息,但它们只是警告。再次感谢。可能值得指出的是,如果您使用SysCache2,那么您必须将配置元素命名为“SysCache2”,而不是“syscache”。
<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>
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>();
}