またはメソッドを使用すると、一次NHibernateキャッシュの恩恵を簡単に受けることができます。しかし、 、、およびはどうでしょうか。彼らも一次キャッシュを使用していますか?LoadGetICriteriaHQLLinq-to-NHibernateQueryOver
2 に答える
5
エンティティを返すために使用しますが、2 番目のレベルのキャッシュを使用しない限り、クエリはデータベースに直接送信されます。
このことを考慮:
var fooUsingGet = session.Get<Foo>(fooId);
var fooQueryById = session.Query<Foo>().Single(f => f.Id == fooId);
2 つのクエリが実行されますが (1 つは Get 用、もう 1 つは Query 用)、両方の変数に同じオブジェクト参照が含まれています。
ここで、第 2 レベルのキャッシュ、クエリ キャッシュを有効にし、クエリのキャッシュを指定すると、次のようになります。
var fooQueryById = session.Query<Foo>().Cacheable()
.Single(f => f.Id == fooId);
var fooQueryByIdAgain = session.Query<Foo>().Cacheable()
.Single(f => f.Id == fooId);
1 つのクエリのみが実行されます。
于 2011-02-07T12:18:15.157 に答える
0
いいえ、私が理解しているように、そうではありません。二次キャッシュのみを使用します。最初のレベルのキャッシュは と のみGetですLoad。
于 2011-02-07T09:30:10.660 に答える