バックグラウンド
同じモデルで実行されているいくつかのプロジェクト/アプリケーションがあります。それらはすべて独自の一意のエンティティ/テーブルを持っていますが、1 つの特定の共通エンティティ/テーブルも共有しています。つまり、アプリケーション A が必要とするエンティティは、共通テーブルを除いて、アプリケーション B が必要とすることはありません。逆もまた同様です。これで、共通テーブルには、アプリケーション A のテーブルだけでなく、アプリケーション B のテーブルとも関係があります。大量の HBM をロードすると処理が遅くなるため、現在実行中のアプリケーションに必要な HBM のみをロードするシステムを実装しました。
問題
アプリケーション A で、共通テーブル/エンティティにアクセスすると、次のようになります。
session.Linq<CommonEntity> ().Where (...);
次の例外が発生します
NHibernate.MappingException: 関連付けがマップされていないクラスを参照しています: (アプリケーション B のエンティティ)
私は、共通エンティティからのリレーションシップを介してアプリケーション B のテーブルに明示的にアクセスしようとした場合にのみ NHibernate が壊れることを望んでいました。結果として、アプリケーション A からはアクセスしないため、壊れることはありません。
質問
アクセスされるまでリレーションシップ マッピングの検証を遅らせるように NHibernate を構成する方法はありますか?
遅延読み込みを使用します。