Укажите, что динамические прокси не должны использоваться для этого класса, указав lazy = false в отображении классов.
Примерно так:
<class name="MyClass" table="MyTable" lazy="false">
</class>
Это означает, что вы не можетеиспользовать динамические прокси с NHibernate.Чтобы быть более понятным: - когда вы извлекаете экземпляр вашего класса, который может использовать динамические прокси, вы получите «пустой экземпляр».То есть NHibernate пока не будет получать данные из БД.Вы получите объект, чей Id будет заполнен, а другие свойства - нет.Только при доступе к свойству NHibernate будет загружать данные из БД.Вот почему свойства должны быть виртуальными, потому что NHibernate создаст подкласс вашего класса внутри и переопределит свойства, чтобы он мог достичь этого поведения.
Я всегда указываю 'lazy = false' на моемсопоставление классов, поскольку я не хочу иметь виртуальные свойства по причине, связанной с инфраструктурой, а не «связанной с доменом».
(обратите внимание, что это не имеет ничего общего с отложенной загрузкой ассоциаций; их можно загружать с отложенной загрузкой, если вы не используете динамические прокси).