Dot-Net

如何使用 NHibernate 模式生成更新數據庫表模式?

  • December 14, 2008

我試圖弄清楚如何使用 NHibernate 配置和映射來更新表模式,而不是刪除和重新創建它們。

目前我正在使用NHibernate.Tool.hbm2ddl.SchemaExport帶有 FluentNHibernate 的 obj 來為 mysql 數據庫生成數據庫模式。雖然我不能說這是一個大問題,但每當我呼叫SchemaExport.Execute數據庫時,它都會刪除所有表,然後重新創建它們。

更酷的是,如果我可以讓它更新現有的表結構,盡可能地保留數據。但我真的不想使用商業產品或程式碼生成器,因為我一般不喜歡程式碼生成,而且我不需要這個,我會考慮為此付費。因此,希望任何答案都能牢記這些警告。

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 FAQ”有(連結現已過期)如何使用 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);
}

引用自:https://stackoverflow.com/questions/366176