1

NHibernate とバッグ内のプロキシ アイテムの使用に関して奇妙な問題が発生しています。私のマッピングは次のようになります。

<?xml version="1.0" encoding="utf-8" ?>

<bag name="Markets" table="ITPUserWatchlistMarkets" cascade="none" lazy="false">
  <key column="UserWatchlistId" />
  <many-to-many class="Swan.Domain.Markets.Market, Swan.Domain.Markets" column="MarketId" lazy="proxy" />
</bag>

私の理解では、多対多のマッピングを lazy="proxy" に設定することで、NHibernate は私のマーケット タイプとは異なるプロキシ オブジェクトを作成する必要があります。

ただし、デバッグを実行すると、実際の Market エンティティがインスタンス化されて Markets バッグに追加されていることが実際に確認できますが、これは発生すべきではありません。

私のマッピングは間違っていますか、それとも NHibernate はプロキシ オブジェクトとして自身の反映された型ではなく実際のエンティティを作成しますか?

よろしく、 アルバロ

4

2 に答える 2

3

NHibernate がプロキシとエンティティをインスタンス化する方法についてのあなたの理解は正しいです。そのプロキシ エンティティのプロパティに初めてアクセスすると、NHibernate はデータベースからエンティティをロードします。

NHibernates が作成する SQL クエリを監視して、NH プロファイラーや SQL プロファイラーなどを使用してこれらのクエリがいつ呼び出されるかを確認してください。

于 2010-07-22T10:04:24.483 に答える
-1

もう少し調査すると、Market クラス マッピングの明示的な lazy="false" プロパティが要素内に設定されており、バッグ自体のプロキシ設定が上書きされていることがわかりました。

すべてがソートされました!

于 2010-07-22T10:40:05.817 に答える