У меня есть приложение для рабочего стола (winforms), которое использует базу данных Firebird в качестве хранилища данных (во встроенном режиме), и я использую NHibernate для ORM. Одной из функций, которые нам необходимо поддерживать, является возможность импорта/экспорта групп данных в/из внешнего файла. В настоящее время этот внешний файл также представляет собой базу данных с той же схемой, что и основная база данных.
У меня уже установлен NHibernate для просмотра нескольких баз данных, и я могу работать с двумя базами данных одновременно. Проблема, однако, заключается в копировании данных между двумя базами данных. У меня есть две стратегии копирования: (1) копировать все одинаковые идентификаторы для объектов [aka import/export] и (2) копировать в основном новые идентификаторы [aka duplicate/copy]. Я говорю "в основном новый", потому что есть некоторые элементы поиска, которые всегда будут скопированы с тем же идентификатором.
Копирование всего с новыми идентификаторами в порядке, потому что у меня просто будет метод "CopyForExport", который может создавать копии всего и не назначать новые идентификаторы (или уничтожать все идентификаторы в дереве объектов).
Каков способ "наилучшей практики" справиться с этой ситуацией и скопировать данные между базами данных при сохранении одинаковых идентификаторов?
Уточнение: я не пытаюсь синхронизировать две базы данных, просто экспортируя подмножество (выбираемый пользователем) или данные для передачи кому-то другому (кто затем импортирует подмножество данных в свою собственную базу данных).
Дальнейшее разъяснение: я думаю, что я выделил проблему: Я хочу использовать функцию ISession.SaveOrUpdate для NHibernate, поэтому я настроил свои объекты с генератором идентификаторов, который не "назначен". Однако у меня проблема, когда я хочу переопределить сгенерированное удостоверение (для копирования данных между несколькими базами данных в одном процессе).
Есть ли способ использовать генератор Guid.Comb или UUID, но иногда можно указать свой собственный идентификатор (для передачи другому соединению базы данных с той же схемой).