NHibernate: воссоздать базу данных с помощью SchemaExport

У меня вопрос о правильной обработке воссоздания базы данных.

В моей среде разработки я часто воссоздаю базу данных, используя

_schemaExport.Drop(true, true);
_schemaExport.Create(createResult, true);

(Должен отметить, что я использую генератор hilo.) Сразу после того, как я воссоздал базу данных, иногда сохранение нового объекта не удается из-за исключения "Cannot insert duplicate key..." .

Мой вопрос: нужно ли мне повторно инициализировать фабрику сеанса (и, возможно, даже сеанс), чтобы правильно синхронизироваться с новым hilo-using база данных? Или он может работать так же, как есть?

Любая подсказка приветствуется!

LG
warappa


person David Rettenbacher    schedule 24.05.2011    source источник


Ответы (1)


Я бы сказал, что вам обязательно нужно создать новый сеанс после воссоздания базы данных. Другой вариант - очистить существующий перед воссозданием БД.

Генератор идентификаторов запустится с нуля после того, как вы воссоздадите БД. Это может привести к тому, что некоторый сгенерированный идентификатор будет таким же, как идентификатор другого объекта в ранее существующем сеансе. Таким образом, вы получаете повторяющиеся ключевые ошибки.

person AlexD    schedule 24.05.2011