У меня есть класс, созданный из WSDL, который имеет кучу публичных свойств и публичное событие. Я расширяю этот класс своим собственным и добавляю к нему некоторые свойства. Все мои собственные свойства объявлены virtual
, но свойства базового класса не являются виртуальными.Предотвращение сопоставления всех открытых членов класса в Fluent NHibernate
Я использую класс классов Fluent NHibernate для отображения только свойств из моего расширенного класса. Как предотвратить (Fluent) NHibernate от попыток сохранить все публичные члены базового класса?
На данный момент, я получаю следующее исключение при создании ISessionFactory:
NHibernate.InvalidProxyTypeException: Следующие типы не могут быть использованы в качестве прокси-серверов:
Тип: Метод get_
<BaseClassProperty
> должен быть «общественность/защищаемую виртуальная» или «внутренняя защищенная виртуальная»типа: метод set_
<BaseClassProperty
> должен быть «открытая/защищенной виртуальные» или «защищенной внутренней виртуальной»...
Тип: Метод add_
<BaseClassEvent
> должен быть 'открытый/защищаемой виртуальной' или 'защищенный внутренний виртуальный'Тип: Метод remove_
<BaseClassEvent
> должен быть 'открытый/защищенный виртуальный' или ' защищенный внутренний виртуальный '
Я не автор WS, поэтому я ничего не могу изменить с этой целью. Похоже, мне придется отключить ленивую загрузку. Благодарю. – alimbada
Правильно ли отключить ленивую загрузку только для этого объекта, вызвав 'Not.LazyLoad()' в конструкторе ClassMap? Или есть лучший способ сделать это? Здесь, кажется, есть несколько способов сделать это здесь: http://stackoverflow.com/questions/1412002/fluent-nhibernate-r1-0-fluent-mapping-disable-lazy-load – alimbada
'Not.LazyLoad()' в «ClassMap» - это самый простой способ пойти, если это только конкретные объекты, которые ему нужны; если это все, вы должны изучить соглашение (один из ответов в этом вопросе, с которым вы связаны, использует соглашение «DefaultLazy»). –