У меня есть такой интерфейс:
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. Для TypeID нет сопоставления, так как я просто хочу, чтобы оно возвращало любое значение DueDateTypeID.
Маркировка класса lazy = "false" в моем отображении стирает проблему. Из того, что я читал, это потому, что нет прокси-сервера, сгенерированного для ленивого сопоставленного класса.
В этом случае я хотел бы использовать функции отложенной загрузки NHibernate; мне нужно реализовать IInterceptor или что-то подобное, чтобы заставить NHibernate по-другому трактовать это свойство?