2017-03-26 23 views
0

我正在使用實體框架6.1.3首先進行數據遷移。 我正在重置遷移過程。我刪除了遷移歷史記錄表並創建了當前db狀態的新基線快照。一切工作在一個新的細跟以下初始化程序安裝:重置實體框架遷移,然後同步先前遷移的模式

Database.SetInitializer(new MigrateDatabaseToLatestVersion<T>, Migrations.Configuration>(true)); 

然而,人們應該如何部署該復位爲我們的客戶誰擁有現有的數據庫?本地失敗,當我有一個現有的數據庫與錯誤: 數據庫中已經有一個名爲'*****'的對象。

當需要重置遷移和同步現有數據庫的模式時,有沒有人有更好的方法?

+1

那麼,根據部署和更改的數量,您可以採用基準腳本,只是註釋每個存在的東西。可能很乏味,因爲你需要比較列,鍵,索引等。你也可以用存在檢查(如果沒有數據庫對象存在然後創建它)來包圍每個數據庫對象。 –

回答

0

我開始思考我需要重置我的遷移,因爲我的團隊以前的開發人員沒有正確使用Add-Migrations腳本。這是導致出現以下錯誤:

enter image description here

但是,我不知道怎麼會制定出針對現有客戶。我沒有意識到我能夠重新搭建我的遷徙。經過很多搜索和反覆試驗,我能夠挽救我的移民。我首先遷移到了一個狀態良好的遷移。

enter image description here

它是使用給出的全名很重要。在試錯之後,我發現了一個穩定的遷移。我證實了這一運行以下:

enter image description here

它會成功,如果能EF充分調和。我也不得不從VS項目中排除最近有針對性的遷移後的所有遷移。簡單的輪班選擇,右鍵單擊並從項目中排除。

然後我在將數據庫更新後將下一次遷移添加回項目。我還使用流暢API來排除當前目標遷移後的所有模型更改。

enter image description here

然後我逐步重新腳手架全部破碎遷移。

enter image description here

然後在最後我創造了我的架構的冪等腳本到這一點。使用下列內容:現在

enter image description here

我的遷移並不抱怨模型失配,我很高興。