Создание (создание) пользовательских объектов в NHibernate - PullRequest
0 голосов
/ 15 января 2010

У меня есть класс Order и SubOrder: потомок Order. Теперь у Order есть .Item, и у SubOrder (очевидно) тоже есть, но для SubOrder нужен SubItem. Что легко при создании:

Item = new SubItem((ISomeInterface)this);

но как мне указать NHibernate создать SubItem вместо Item, когда он загружает SubOrder из базы данных (Session.Get (id))? Типа элемента нет в базе данных (и я не нуждаюсь и не хочу, чтобы он был там); это всегда «Элемент для заказа, SubItem для SubOrder». Кроме того, его необходимо создать с помощью (ISomeInterface) SubOrder в качестве параметра конструктора.

Короче говоря, как мне управлять созданием пользовательских сущностей в NHibernate для достижения целей, описанных выше? Можно ли иметь ссылку на SubOrder при создании SubItem (я могу жить со свойством «инъекция», если нет)?

Я, вероятно, могу использовать IUserType, но это, похоже, излишество; и я не вижу, как применить IUserType только к SubOrder.Item (то же самое для IInterceptor). Также я не вижу, как получить ссылку на родительский порядок, кроме как использовать событие OnLoad для SubOrder и установить там свойства SubItem ... что неудобно.

1 Ответ

0 голосов
/ 16 января 2010

«Событие OnLoad для SubOrder и установка там свойств SubItem» -> есть одно решение.

В противном случае вы можете попробовать написать пользовательский ReflectionOptimizer .

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