2013-09-27 46 views
5

TL; DR是有管理的任何工具(自動創建,執行)NHibernate的遷移(使用原生.NET語言)?NHibernate的代碼優先遷移管理工具一樣的EntityFramework,Django的南

我來自Django的背景下,鼓勵開發代碼優先。還有一個名爲South的事實上的「行業標準」遷移庫。 用於改變模式中的典型的工作流是以下:

  1. 變化的模型的代碼(即,添加/刪除/修改的類和/或性質)[當然,型號代碼是在本機應用程序語言 - 在這裏: python]
  2. run schemamigration命令自動生成遷移代碼[遷移代碼是python]並將其寫入「migrations」子目錄。
  3. 如有必要,調整自動生成的代碼。自動生成器非常聰明,但不夠聰明,例如處理列重命名。
  4. 運行遷移命令,它看起來了「遷移」目錄,並執行所有未都還沒有執行的遷移(這個人是想出了利用遷移歷史表)

這不僅是發展前景十分方便(甚至是事情變化如此之快的SCRUM),但也用於更新生產 - 只要確保將開發機器和生產服務器上的遷移分開。 它對於生產也是非常安全的,因爲您可以在應用之前審閱並選擇性地修改遷移。

雖然.NET評價的ORM,我已經試過實體框架5中 - 正如我發現 - 具有非常類似的功能Django的南的一個。 有一個Package-Manager控制檯命令用於創建遷移代碼,這些代碼可能在執行前被修改,還有一個單獨的命令執行所有尚未執行的遷移,並將它們標記爲在遷移歷史記錄中執行。

有沒有像NHibernate這樣的工具?

我知道SchemaUpdate功能,但據我所知,它只是更新所有這一切需要在一個步驟要更新的東西。我不會在生產中使用它,在數據丟失不是災難但仍然有些痛苦的開發過程中。 我也知道SchemaUpdate可能用於將SQL語句導出到一個文件而不是執行它們,但它不那麼方便,因爲沒有自動管理歷史遷移。另外,你必須手工編寫SQL;)

回答

3

不知道這是否真的回答你的問題,而是自動化模式更改和更新你的映射,甚至設計你的映射,這是一個好主意,使用工具。特別是如果你有一個非常大的數據庫/域模型。

我目前正在與entity developer from devart工作。

我們比較了多個類似的工具,但是這個工具真的很有趣。它只是有這麼多的功能,還提供了功能添加自定義T4模板來生成任何你想要你的模型,甚至可以添加自定義屬性,然後可以將代碼生成器部分中使用的模型設計...

您也可以將您的實體/屬性重命名爲更易於手動讀取的內容,並且該工具即使在從數據庫架構更新後也會保留此內容...

當然,它同時支持,模型或數據庫第一種方法......

你可以下載事業的試用版弄清楚這是否會滿足您的需要......

0

的工具,像LLBLGEN可以在這裏幫助.. LLBLGen Pro是一個數據訪問解決方案。 您可以使用LLBLGen Pro Designer創建實體/域模型,爲四個支持的O/R映射框架之一定義映射並生成源代碼:實體框架,LLBLGen Pro運行時框架,NHibernate和Linq to SQL。