2

私の「user」エンティティは、ほとんどの場合、整数の代理キーではなく、usernameによって取得されます。ユーザー名は主キーではないため、これはISessionがユーザー名をキャッシュせず、同じデータを取得するためにデータベースに繰り返しアクセスすることを意味します。

ユーザー名で取得したユーザーをキャッシュするようにISessionを取得するようにNHibernateを構成する方法はありますか?

4

3 に答える 3

2

答えは実際にはノーのようです。はい、第2レベルのキャッシュを使用している場合は、いいえ、セッションキャッシュを使用している場合はいいえ。

于 2011-03-04T16:41:23.820 に答える
1

はい、NHibernateのnatural-id要素を使用してこれを実現できます。http://ayende.com/Blog/archive/2009/06/23/nhibernate-ltnatural-idgt.aspxを参照してください。この例は、まさにあなたが求めているものです。

于 2011-03-04T12:42:30.437 に答える
1

「セッションキャッシュ」は実際にはキャッシュではなく、エンティティマップです。

私の提案は、HttpContextにアイテムを格納するカスタムプロバイダーを使用して、クエリの第2レベルのキャッシュを有効にすることです。

于 2011-03-05T23:13:09.220 に答える