そこにいるNHibernateの達人に相談するために、私は遅延ロードされたコレクションを知っています(そして広く使用しています)。
ただし、これまでのところ、クラス レベルで遅延属性を設定することの意味を突き止めることができませんでした。
既存の hbm ファイルでは、それらすべてに lazy が false に設定されたクラス ノードがあります。例えば
<class name="Decision" lazy="false" ...>
この属性を削除して実験しました (したがって、デフォルトは true です)。その結果、InvalidProxyTypeExceptionが発生します。
データオブジェクトであるかどうかに関係なく、すべてのプロパティ(つまり、参照型)およびコレクションを lazy="true" として設定しているためだと思います。
だから私の質問は、この仮定は正しいですか?NHibernate 構成のクラス ノード レベルで lazy="true" を設定すると、すべての参照型とコレクション型がデフォルトで lazy="true" に設定されますか? クラスレベルで lazy="true" が行うことは他にありますか?
上記のことが正しい場合、ドメイン オブジェクト内で通常のプロパティとデータ プロパティを混在させることはできないことも意味します。ただし、これらのプロパティを仮想に設定しない限り、必要がない場合でも同様です。
public virtual FirstName {get; set;}
public virtual LastName {get; set;}
public FullName {get{ return FirstName + " " + LastName;}} // InvalidProxyTypeException thrown!