Mat*_*att 7 nhibernate asp.net-mvc caching
我有一个使用NHibernate的MVC3应用程序.一切顺利,直到我开始尝试添加二级缓存.浏览网页几个小时后,我终于找到了我认为正确的dll(NHibernate.Caches.SysCache2.dll)并将其添加到我的项目中.
但是,我找不到使用MVC应用程序配置它的任何帮助.所有示例都指的是有一个App.config文件(我认为这是用于Web窗体).我是一名正在学习.Net的Java开发人员,因此我对如何安装所有内容并不熟悉.
有人能指出我正确的方向.我正在使用xml hibernate(hbm)文件.
谢谢.
我正在使用MVC3和NHibernate.Caches.SysCache.dll这样的二级缓存......
1,像这样在你的web.config文件中添加一个配置部分
<configSections>
<section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=6876f2ea66c9f443"/>
</configSections>
Run Code Online (Sandbox Code Playgroud)
在配置部分下的web.config中添加一个syscache部分,如下所示:
<syscache>
<cache region="SomeCustomNameRegion" expiration="86400" priority="5" />
</syscache>
Run Code Online (Sandbox Code Playgroud)
在我的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>
Run Code Online (Sandbox Code Playgroud)
我正在使用FluentNhibernate来创建我的映射并添加它以支持缓存:
public CustomerClassMap()
{
Cache.NonStrictReadWrite();
Id(x => x.Id);
Map(x => x.Name);
//... more properties
}
Run Code Online (Sandbox Code Playgroud)
然后在我的数据访问代码中,对于我想要缓存的查询,我有类似的东西:
public IEnumerable<Customer> GetAllCached()
{
return Session.CreateCriteria(typeof(Customer))
.SetCacheable(true)
.SetCacheRegion("SomeCustomNameRegion")
.SetCacheMode(CacheMode.Normal)
.AddOrder(Order.Desc("CreateDate"))
.List<Customer>();
}
Run Code Online (Sandbox Code Playgroud)
以下是一些有用的链接,可以了解更多细节.你需要担心的是没有关于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/
| 归档时间: |
|
| 查看次数: |
3547 次 |
| 最近记录: |