0

NHibernate の 1 次キャッシュは、同じセッションを使用する場合に使用できます。ActiveRecordBase.FindAll()毎回新しい を作成しISessionます。したがって、次のような場合は、一次キャッシュから利益を得ることができません。

void test1()
{
  Car.FindAll();
  Car.FindAll();
  Car.FindAll();
}

解決策はありますか?

4

2 に答える 2

1

複数を呼び出してFindAll()も、複数の異なるセッションが強制されるわけではありません。それらはすべて同じセッションを使用します。FindAll()利益を得られない理由は、内部的に使用しICriteriaICriteriaそれ自体が一次キャッシュを使用できないためです。第 1 レベルのキャッシュは、Loadおよび でのみ使用できますGet

詳細については、こちらをご覧ください

于 2011-02-08T04:09:50.557 に答える
0

第 1 レベルのキャッシュ (セッションベース) のみを使用する限りではありません。二次キャッシュを有効にすれば可能です。

1 次および 2 次キャッシュの有効性については、こちらを参照してください。http://web.archive.org/web/20110514214657/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/11/09/first-and-second-level-caching-in-nhibernate.aspx

于 2011-02-06T10:07:06.297 に答える