Один и тот же бизнес-объект для идентичных таблиц? - PullRequest
0 голосов
/ 18 октября 2010

Я получил устаревшую базу данных, в которой около 10 одинаковых таблиц (отличается только имя).Можно ли использовать один и тот же бизнес-объект для всех таблиц, не создавая несколько файлов классов / сопоставлений?

Ответы [ 2 ]

1 голос
/ 19 октября 2010

Вы можете использовать функцию имени объекта, если вы используете NHibernate v2.1 или выше. Это плохо документировано, но я активно использую эту функцию. Стало трудно найти документацию по нему, но посмотрите здесь:

Раздел 5.3 в

http://docs.jboss.org/hibernate/core/3.2/reference/en/html/mapping.html#mapping-entityname

Несколько вещей, о которых нужно знать. Теперь вы должны использовать имя объекта вместо имени класса для ссылки на объекты. В целом, это не совсем прозрачное изменение при переходе от имен классов к именам сущностей.

Для действий сеанса теперь требуются два параметра, например:

_session.Save ("MyEntity", myobject)

Имя объекта определяет, в какую таблицу попадают данные.

Некоторые запросы HQL больше не работают должным образом, иногда вместо них необходимо использовать критерии.

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

1 голос
/ 18 октября 2010

Вы можете создать базовый класс со всеми свойствами, но вам все равно необходимо отобразить их все.

Для этого вы можете использовать копирование и вставку сущностей XML (см. Пример на http://nhibernate.info/doc/nh/en/index.html#inheritance-tableperconcreate-polymorphism),или метод отображения на основе кода (Fluent или ConfORM). Обычно они упрощают повторное использование.

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