を通じて私はこのようなインターフェイスていません:NHibernateのは、セッションの外部IDを返しますが、プロパティ
public interface ICoreType {
int TypeID {get;}
}
そして、このようにそれを実装NHibernateのクラス:
public class DueDateType : ICoreType {
public virtual int DueDateTypeID {get;set;}
...
public virtual int TypeID { get{ return this.DueDateTypeID; } }
}
はここに私のマッピングです。
<class name="DueDateType" table="tdfDueDateType" lazy="true" >
<cache usage="read-write" include="all"/>
<id name="DueDateTypeID" column="DueDateTypeID" >
<generator class="identity"/>
</id>
...
</class>
私はNHibernateからオブジェクトのインスタンスを取得し、それをオブジェクトのスコープの外に返します。それが作成されたアクティブなセッション、私は値DueDateTypeIDを得ることができますが、ちょうど良い、しかしTypeIDにアクセスすると、LazyInitializationExceptionがスローされます。私は単純にDueDateTypeIDの値が何であれ返すように、TypeIDのマッピングはありません。
マッピングでlazy = "false"とマークすると、問題が消去されます。私が読んできたことから、それは非遅延マッピングされたクラスのために生成されたプロキシがないからです。
この場合、NHibernateの遅延ロード機能を使用したいと思います。 NHibernateにこのプロパティを別々に扱わせるために、IInterceptorやそのようなものを実装する必要がありますか?