Свободный NHibernate - пустые файлы схемы SQL - PullRequest
0 голосов
/ 29 марта 2012

Я все еще не совсем понимаю, как экспортировать и создавать схемы NHibernate. Чего я хочу добиться, так это экспортировать схему drop-create sql file И / ИЛИ воссоздавать схему базы данных в зависимости от конфигурации приложения.

Очевидно, я начал с

private void BuildSchema(NHConf.Configuration cfg){
   var schema = new SchemaExport(cfg);
   schema.SetOutputFile(filename);
   schema.Create(true, true);
   schema.Drop(true, true);
}

Но недавно я выяснил, что фактически воссоздание моей схемы - это NHConf.Environment.Hbm2ddlAuto, установленный в «create», и SchemaExport к этому ничего не имеет.

Также существуют файлы с экспортированной схемой SQL, но все они пусты (0 КБ), что является моей главной проблемой, поскольку я управляю воссозданием схемы с помощью свойства Hbm2ddlAuto.

Есть идеи?

EDIT: Метод BuildSchema вызывается непосредственно перед cfg.BuildSessionFactory ()

Я использую FluentNHibernate с NH 3.1 и Oracle 11g

Ответы [ 2 ]

2 голосов
/ 08 апреля 2012

в вашем методе вы выполняете drop-create, а затем отбрасываете, а также включаете запись в базу данных.

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

new SchemaExport(config)
    .SetDelimiter(";")
    .SetOutputFile(filename)
    .Create(false, false);

чтобы создать его в базе данных, это работает для меня

new SchemaExport(config).Create(false, true);
1 голос
/ 05 июля 2012

Если вы используете конфигурацию Fluent, проверьте файл сопоставления на:

SchemaAction.None();

В моем случае я прокомментировал эту строку, и теперь экспорт схемы в файл работает!

Этот пост переместил меня в правильном направлении: http://lostechies.com/rodpaddock/2010/06/29/using-fluent-nhibernate-with-legacy-databases/

SchemaAction.None (); Следующая интересная функция - SchemaAction.None (). При разработке наших приложений у меня есть интеграционный тест, который используется для построения всей нашей схемы по умолчанию. Я не хочу, чтобы эти таблицы генерировались в нашей схеме, они внешние. SchemaAction.None () говорит NHibernate не создавать эту сущность в базе данных.

...