2008-12-14 70 views
53

我想弄清楚如何使用映射NHibernate配置來更新表模式,而不是丟棄和重新創建它們。如何使用NHibernate架構生成來更新數據庫表格模式?

目前我使用的NHibernate.Tool.hbm2ddl.SchemaExport OBJ與FluentNHibernate來生成一個MySQL數據庫的數據庫架構。雖然我不能說這是一個巨大的問題,但只要我在數據庫上調用SchemaExport.Execute,它將刪除所有表,然後重新創建它們。

將冷卻器的方式是什麼,如果我可以只是將其更新的數據保留在可能情況下現有的表結構。但我並不想使用商業產品或代碼生成器,因爲我一般不喜歡代碼生成,並且我不需要這麼多,所以我會考慮爲它付費。所以希望任何答案都會記住這些警告。

回答

64

SchemaUpdate工具對象提供數據庫模式的更新,通過明顯地生成和執行一系列SQL UPDATE語句(以及約束語句)時,它的void Execute(bool script, bool doUpdate) 函數被調用。 SchemaUpdate類位於NHibernate.Tool.hbm2ddl命名空間中,該空間可以在Nhibernate.dll文件中找到。

SchemaUpdate在nhibernate 1.0.2工具集指南的第15章中提到,here(第15.1.5節)。

「NHibernate的常見問題解答」了(鏈接現在已過期)如何使用SchemaUpdate工具更完整的示例:

[Test] 
public void Update_an_existing_database_schema() 
{ 
    _cfg = new Configuration(); 
    _cfg.Configure(); 
    _cfg.AddAssembly(Assembly.LoadFrom("DataLayer.dll")); 
    var update = new SchemaUpdate(_cfg); 
    update.Execute(true, false); 
} 
+1

我們不能修改一次實例創建字段的設置從nvarchar的修改字符串的長度( 255)到nvarchar(45),我們可以嗎? – 2009-08-31 10:43:16

相關問題