Linq式を使用して私のNHibernateデータソースに問い合わせます。 私が持っている問題は、式の2つの呼び出し(または悪い語彙のために残念な評価)が比較で一致することはないということです。結果として、NHibernateは同じパラメタで同じSQLをあまり頻繁に実行しません。NHibernateのキャッシュ:分かりやすい使用法、ベストプラクティス?
私は流暢にそうように構成され、NHibernateのキャッシュを使用してこの問題を中心に出荷さ:
Fluently.Configure().Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.Is(cStr))
.ShowSql())
.Mappings(x => x.FluentMappings.AddFromAssemblyOf<MyClassMap>())
.Cache(x=>x.UseQueryCache()
.ProviderClass("NHibernate.Cache.HashtableCacheProvider"))
これは生産で終わるしないように、私は、後でプロバイダの世話をします。 次は、私のすべてのクエリがキャッシュ可能であるとして示されている:
session.Query<MyClass>().Cacheable().Where(filter).ToList();
は、私の知る限りreadを持っているように、キャッシングクエリは1当たりのSessionFactoryスコープを有する第2のレベルのキャッシュ、で行われます。一方で、アプリケーションデータをリロードするためには、SessionFactoryを再インスタンス化しなければならないということです。これは、セッションで同じことをするよりはるかにコストがかかると思います。
SessionFactoryを使用してクエリをキャッシュする効率的な方法です(文字通り、意味することはありません)。
リンクありがとうございます。手動ではなく、手動ではなく、最終的には同じ結果が得られます。データは、異なるコンピュータから会社全体で編集され、それぞれ独自のSessionFactoriesとセッションがあります。キャッシュをクリアしないと、 –
@SebastianEdelmeierは分散キャッシュを使用します –
@DiegoMijelshonはNCacheのような別の製品を指していますか? –