質問

私は流fluentなニベナートでキャッシュ領域を実装しようとしてきましたが、これまでに以下をやったことがあります。

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)クラスマップを変更してキャッシュを有効にし、選択した領域を設定します。

 public UserMap()
 {
     Cache.ReadWrite().Region("User");
     ...
 }

うまくいけば、私は上記を正しくやったことを願っていますが、各地域の優先度とキャッシュの期間を構成する場所を実際に把握することはできません。それをする方法を知っていますか?また、上記のコードで欠陥がある場合は、フィードバックに本当に感謝しています。

役に立ちましたか?

解決

Web/app.configのSyscache構成に、この地域の優先度と有効期限を追加する必要があります。を見てみましょう この素晴らしい投稿 セカンドレベルのキャッシュを使用することの素晴らしい説明。例では、バニラnhibernateを使用していますが、アイデアを取得する必要があります。Syscacheの構成に関するビットは、投稿の最後にあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top