Dot-Net
如何使用 NHibernate 模式生成更新數據庫表模式?
我試圖弄清楚如何使用 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); }