流暢な nhibernate を使用してキャッシュ領域を実装しようとしてきましたが、これまでに次のことを行いました。
1) Fluently.Configure() でキャッシュをセットアップします。
private static ISessionFactory CreateSessionFactory()
{
string csStringName = Environment.MachineName;
var nhibConfigProps = new Dictionary<string, string>();
nhibConfigProps.Add("current_session_context_class","web");
var cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey(csStringName))
.ShowSql()
.Cache(cache=>cache.ProviderClass<NHibernate.Caches.SysCache2.SysCacheProvider>().UseQueryCache()))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserMap>())
.ExposeConfiguration(config => config.AddProperties(nhibConfigProps))
.ExposeConfiguration(config=> config.EventListeners.DeleteEventListeners = new IDeleteEventListener[] {new SoftDeleteListener()})
.ExposeConfiguration(config => new SchemaUpdate(config).Execute(false, true))
.BuildSessionFactory();
return cfg;
}
2) ClassMap を変更してキャッシュを有効にし、選択した領域を設定しました。
public UserMap()
{
Cache.ReadWrite().Region("User");
...
}
上記を正しく行ったことを願っていますが、各リージョンの優先度とキャッシュ期間をどこで構成するかがわかりません。その方法を知っていますか?上記のコードに欠陥を見つけた場合は、フィードバックをいただければ幸いです。