2009-05-03 14 views
8

Выполняя свои первые шаги с помощью NHibernate, я пытаюсь создать автоматическое создание моих таблиц из файлов hbm. Бэкэнд базы данных - это SQL Server 2008 Developer Edition.NHibernate SchemaExport не создает таблицы, когда «скрипт» является ложным

Это общий пример кода, я вижу в NHibernate Tutorials:

var cfg = new Configuration(); 
cfg.Configure(); 
cfg.AddAssembly(typeof(Posting).Assembly); 
new SchemaExport(cfg).Execute(false,true,false,false); 

К сожалению, это не работает. Я установил show_sql в значение true, и он не распечатывает какой-либо оператор. Посмотрев на профилировщик SQL, я вижу, что мое приложение подключается к БД, но ничего не делает.

я могу исправить, изменив первый параметр («сценарий») истина:

new SchemaExport(cfg).Execute(true,true,false,true); 

Я не понимаю, почему. Параметры SchemaExport, к сожалению, не совсем объяснены (также не разница между .Create и .Execute), и я хотел бы узнать, что делает этот параметр, и почему он не нужен, т.е. при использовании SQL Compact Edition (который работает также, когда script is false)

ответ

27

SchemaExport является частью утилиты Hbm2Ddl, которая действительно отделена от функциональности NHibernate. Он не использует «show_sql», который используется во время работы только NHibernate.

Чтобы получить копию схемы вы создаете вы используете .SetOutputFile (имя файла)

Это метод, который я использую, когда я хочу, чтобы создать новую базу данных. я отформатированный схему в MyDDL.sql файл и база данных построена из схемы:

private void BuildSchema(Configuration config) 
{ 

     new SchemaExport(config) 
      .SetOutputFile(_fileName + "MyDDL.sql") 
      .Execute(true /*script*/, true /*export to db*/, 
        false /*just drop*/, true /*format schema*/); 
} 

SchemaExport.Create это просто ярлык для Schema.Execute с просто падение ложно и формат верно.

public void Create(bool script, bool export) 
    { 
     Execute(script, export, false, true); 
    } 
+0

Я использую это с NHibernate 3.3, оно записывается в файл, но не в базу данных. –

 Смежные вопросы

  • Нет связанных вопросов^_^