Составное приложение NHibernate - записи запуска для модуля - PullRequest
0 голосов
/ 28 июля 2011

Я создаю составное (Prism) WPF-приложение.Мне удалось построить несколько основных элементов: например, открытие модуля из папки.Я также использую NHibernate (Свободно) для сохранения данных.Мне удалось разделить модули, чтобы у каждого была своя собственная модель и сопоставление, и когда Prism добавляет модуль, он также добавляет сопоставления в мою nh-конфигурацию.

Что я хотел бы сделать, это вставить некоторые записи запуска, когда модуль, который никогда не был запущен, включен.Например:

Когда я впервые запускаю свое приложение, оно обнаруживает отсутствие базы данных и создает ее только с одной таблицей конфигурации.Эта таблица содержит информацию о том, какой модуль включен.Затем администратор может настроить приложение через пользовательский интерфейс, какие модули должны быть включены.В следующий раз, когда приложение запускается, оно обнаруживает новые вкладки из вновь включенных модулей и создает их таблицы с помощью NH UpdateSchema.То, что я хотел бы сделать, это также вставить некоторые записи запуска с этой таблицей create.Я думаю, что это должно быть сделано NH Events (документация NH по событиям) .Было бы неплохо что-то вроде PostTableCreateEvent, но я не могу найти ничего подобного.

Кто-нибудь из вас делал что-то подобное?

1 Ответ

1 голос
/ 28 июля 2011

События запускаются в сеансах, но Schemaexport принимает сеансовые фабрики или сеансы, поэтому вы не можете подключиться к ним. Для этого вам нужно <database-object><create>INSERT ...</create><drop></drop></database-object> в xml-отображениях или в простом sql, так как FNH не поддерживает <database-object> afaik.

Вариант 1: добавьте отображения fluent и hbm.xml при создании NH-конфигурации и вставьте сопоставления с <database-object>

Вариант 2: разрешить модулям предпринимать дополнительные шаги (sql) после создания таблиц (для одного из моих проектов я обернул Schemaexport в свой собственный класс / метод, который также создает саму базу данных, которая не обрабатывается schemaexport, и вставляет такие данные, как схема и версия)

...