Tôi đang sử dụng bộ nhớ đệm cấp 2 với MVC3 và NHibernate.Caches.SysCache.dll như thế này ...
1st, thêm một phần cấu hình để file web.config của bạn như thế này
<configSections>
<section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=6876f2ea66c9f443"/>
</configSections>
thêm một phần syscache vào web.config của bạn trong phần cấu hình của bạn như thế này:
<syscache>
<cache region="SomeCustomNameRegion" expiration="86400" priority="5" />
</syscache>
trong file hibernate.cfg.xml của tôi có các thuộc tính sau thêm:
<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>
Tôi đang sử dụng FluentNhibernate để tạo ra các ánh xạ của tôi và thêm này để hỗ trợ bộ nhớ đệm:
public CustomerClassMap()
{
Cache.NonStrictReadWrite();
Id(x => x.Id);
Map(x => x.Name);
//... more properties
}
Và sau đó trong mã truy cập dữ liệu của tôi, tôi có một cái gì đó tương tự như sau cho các truy vấn mà tôi muốn được lưu trữ :
public IEnumerable<Customer> GetAllCached()
{
return Session.CreateCriteria(typeof(Customer))
.SetCacheable(true)
.SetCacheRegion("SomeCustomNameRegion")
.SetCacheMode(CacheMode.Normal)
.AddOrder(Order.Desc("CreateDate"))
.List<Customer>();
}
Dưới đây là một số liên kết hữu ích để xem chi tiết hơn một chút. Không có gì cụ thể về MVC3 mà bạn cần phải lo lắng về, và hầu hết là không thay đổi từ các phiên bản trước của NHibernate theo như tôi có thể nói.
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/
lớn - nhờ cho điều đó. Làm việc hoàn hảo. Tôi vẫn nhận được một số thông điệp giản đồ trong web.config cho phần tử syscache nhưng chúng chỉ là cảnh báo. Cảm ơn một lần nữa. – Matt
Có lẽ đáng để chỉ ra rằng nếu bạn sử dụng SysCache2 thì bạn phải đặt tên phần tử cấu hình là "syscache2" thay vì "syscache". –