NHibernate - как динамически переключать генератор для Id? - PullRequest
0 голосов
/ 23 февраля 2011

Прямо сейчас у меня есть все мои отображения как hbm.xml.Я хочу динамически переключать тип генератора Id для определенных объектов с «удостоверения» на «назначенный» во время выполнения (запуск приложения).

Это потому, что мне нужно поддерживать импорт данных из предыдущей системы и сохранять существующие идентификаторы.

Возможно ли это?Как?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Генератор является частью сопоставлений, поэтому вам нужно изменить сопоставления перед созданием фабрики сеансов.

Это легко сделать с помощью Fluent или ConfORM. Можно изменить сопоставления XML перед передачей их в конфигурацию, но это громоздко.

Просто проверьте флаг конфигурации (который вы измените при запуске приложения) и вызовите соответствующий генератор.

1 голос
/ 23 февраля 2011

Непонятно, зачем вам нужно сохранять существующие идентификаторы. Я думаю, вам не нужно сохранять существующие идентификаторы. Может, вам вместо этого нужно сохранить альтернативные идентификаторы?

Если у предыдущей системы была своя собственная база данных, то вы: 1) Нужно другое сопоставление для другой таблицы в другой базе данных 2) Скопируйте данные в существующую базу данных (с идентификатором ключа)

Что означает, что вам все равно понадобятся новые идентификаторы. Пример. Предположим, вы хотите скопировать таблицу «авиакомпаний», а предыдущая система использует «код авиакомпании» в качестве первичного ключа. Вы можете использовать целое число в качестве первичного ключа в новой базе данных и код авиакомпании в качестве альтернативного ключа.

...