Запретить отображение всех открытых членов класса в Fluent NHibernate - PullRequest
1 голос
/ 29 апреля 2010

У меня есть класс, сгенерированный из WSDL, который имеет множество открытых свойств и публичное событие. Я расширяю этот класс своим собственным и добавляю в него некоторые свойства. Все мои собственные свойства объявлены virtual, но свойства базового класса не являются виртуальными.

Я использую ClassMap Fluent NHibernate для отображения только свойств из моего расширенного класса. Как мне предотвратить (Свободно) NHibernate от попытки сохранить всех открытых членов базового класса?

В настоящий момент я получаю следующее исключение при создании ISessionFactory:

NHibernate.InvalidProxyTypeException: следующие типы не могут использоваться в качестве прокси:

Тип: метод get_ <BaseClassProperty> должен быть «публичный / защищенный виртуальный» или «защищенный внутренний виртуальный»

Тип: метод set_ <BaseClassProperty> должен быть «публичный / защищенный виртуальный» или «защищенный внутренний виртуальный»

...

Тип: метод add_ <BaseClassEvent> должен быть «публичный / защищенный виртуальный» или «защищенный внутренний виртуальный»

Тип: метод remove_ <BaseClassEvent> должен быть «публичный / защищенный виртуальный» или «защищенный внутренний виртуальный»

1 Ответ

3 голосов
/ 30 апреля 2010

Свободный NHibernate не пытается сохранить всех ваших открытых участников. Это механизм прокси NHibernate, который требует, чтобы все члены были виртуальными; они могут или не могут быть использованы для настойчивости, но они все равно необходимы.

Вам нужно либо отключить отложенную загрузку и прокси для объекта, либо (предпочтительно!) Выставить DTO в своем WS, а не непосредственно на объекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...