2009-05-03 48 views
8

使用NHibernate開始我的第一步,我試圖讓它從hbm文件中自動創建我的表格。數據庫後端是SQL Server 2008開發版。當「script」爲false時,NHibernate SchemaExport不會創建表格

這是常見的示例代碼中我看到的NHibernate教程:

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

可悲的是,這是行不通的。我已將show_sql設置爲true,並且不打印任何語句。看着SQL事件探查器,我看到我的應用程序連接到數據庫,但什麼也沒做。

我可以修復,通過改變一個參數(「腳本」)設置爲true:

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

我不明白爲什麼。 SchemaExport的參數可悲的是沒有真正解釋(也沒有.Create和.Execute之間的差異),我想知道這個參數的作用,以及爲什麼它不是必需的,例如當使用SQL Compact Edition時(它也適用於腳本是假的)

回答

27

SchemaExport是Hbm2Ddl實用程序的一部分,它實際上與NHibernate功能是分開的。它不使用僅在NHibernate運行時使用的「show_sql」。

爲了讓你創建你用.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,這是寫入文件,但不寫入數據庫。 – 2014-11-20 17:11:17

相關問題