TL; DR是有管理的任何工具(自動創建,執行)NHibernate的遷移(使用原生.NET語言)?NHibernate的代碼優先遷移管理工具一樣的EntityFramework,Django的南
我來自Django的背景下,鼓勵開發代碼優先。還有一個名爲South的事實上的「行業標準」遷移庫。 用於改變模式中的典型的工作流是以下:
- 變化的模型的代碼(即,添加/刪除/修改的類和/或性質)[當然,型號代碼是在本機應用程序語言 - 在這裏: python]
- run schemamigration命令自動生成遷移代碼[遷移代碼是python]並將其寫入「migrations」子目錄。
- 如有必要,調整自動生成的代碼。自動生成器非常聰明,但不夠聰明,例如處理列重命名。
- 運行遷移命令,它看起來了「遷移」目錄,並執行所有未都還沒有執行的遷移(這個人是想出了利用遷移歷史表)
這不僅是發展前景十分方便(甚至是事情變化如此之快的SCRUM),但也用於更新生產 - 只要確保將開發機器和生產服務器上的遷移分開。 它對於生產也是非常安全的,因爲您可以在應用之前審閱並選擇性地修改遷移。
雖然.NET評價的ORM,我已經試過實體框架5中 - 正如我發現 - 具有非常類似的功能Django的南的一個。 有一個Package-Manager控制檯命令用於創建遷移代碼,這些代碼可能在執行前被修改,還有一個單獨的命令執行所有尚未執行的遷移,並將它們標記爲在遷移歷史記錄中執行。
有沒有像NHibernate這樣的工具?
我知道SchemaUpdate
功能,但據我所知,它只是更新所有這一切需要在一個步驟要更新的東西。我不會在生產中使用它,在數據丟失不是災難但仍然有些痛苦的開發過程中。 我也知道SchemaUpdate可能用於將SQL語句導出到一個文件而不是執行它們,但它不那麼方便,因爲沒有自動管理歷史遷移。另外,你必須手工編寫SQL;)