2010-08-29 102 views
7

使用codefirst EF4進行數據庫重構的最佳做法是什麼?首先使用EF 4代碼重構代碼/數據庫模式 - 數據遷移

我很想知道當RecreateDatabaseIfModelChanges選項不可行時人們如何更改類和數據庫。數據遷移將需要發生。

目前微軟有先用模型做了一個解決方案:

http://blogs.msdn.com/b/adonet/archive/2010/02/08/entity-designer-database-generation-power-pack.aspx?PageIndex=2#comments

沒有人有代碼首先一個好的策略?

+0

你到底在找什麼?你不*有*用CF重構你的數據庫模式。 – TheCloudlessSky 2010-08-29 15:40:19

+3

如果您將它吹走並重新創建,則不必重構它,但除此之外,您將需要編寫並應用遷移腳本,否則不會?否則它不會匹配代碼。 – 2010-08-29 15:48:00

回答

1

我正在處理數據庫上下文初始化程序,它將通知網站管理員模型和數據庫模式是否不同步並顯示不同。這對於喜歡對代碼優先模型和數據庫模式都有完全控制權的開發人員非常有用。檢查出來:

https://github.com/rialib/efextensions

1

在我CodeFirst應用,本地編譯有表示不生產是一個標誌的app.config。當我不在生產時,它完全覈實並重新創建數據庫。由於我的生產數據庫用戶沒有權限刪除數據庫,即使我的web.config變換以某種方式遺漏了(因此EF試圖重新創建數據庫),我的生產數據庫不會被刪除,而是會拋出異常。

我的工作流程是這樣的:

  1. 退房與最新變化
  2. 快速煙霧/迴歸測試代碼分公司生產(這應該之前就已經檢查代碼到生產分公司完成,但只是萬一)
  3. 下載我的生產數據庫的最新的備份和我的本地代碼中創建(即使它的生產代碼,因爲它是本地IT RECR數據庫之間我的本地SQLEXPRESS服務器
  4. 運行Open DBDiff上安裝它使用數據庫)與生產備份進行比較。
  5. 檢查生成的腳本,並嘗試將其與生產備份運行
  6. 假設沒有發生錯誤,請覆蓋代碼生成的生產數據庫並對生產數據執行測試以確保所有數據仍然完好無損;
  7. 在實際生產數據庫上運行腳本。

步驟2自動創建一個基於最新數據模型的新的乾淨的數據庫,所以我總是知道我有一個最新的數據庫,沒有可能沒有生產準備的開發工作中的工件。

相關問題