0

我首先使用實體​​框架5代碼並啓用了遷移。我對模型類做了很多修改,現在我有太多的遷移類,因爲在每次更改之後,我都更新了數據庫。 現在我想合併所有的更新以獲得一個「初始類」或2,以便我可以只運行一次update-database命令,如果我必須再次創建我的數據庫。 這可能沒有代碼(太重),我的意思是一個命令,例如? 謝謝。EF 5 - 代碼優先遷移

回答

1

該解決方案基於您是否希望將現有數據保存在數據庫中(如果您有生產數據庫,這絕對是必需的),或者您可以簡單地刪除數據庫。

一Cuurrent數據庫可以DROP掉

首先,你需要刪除所有遷移步驟並刪除當前的數據庫然後運行命令

add-migration Initial 

這樣你就只能有一個遷移步驟而不是很多。

二,必須保留數據

首先創建當前數據庫(在解決方案中設置爲默認數據庫)的備份,然後刪除數據庫,以便在運行add-migration命令時實體框架將認爲不存在遷移尚未應用。

執行完第一部分中描述的步驟後,您將只有一個名爲Initial的遷移步驟。在此之後運行

update-database 

命令,這將創建一個數據庫,只有在__MigrationHistory表中的一行但符合當前的模型。從__MigrationHistory表中保存這一行。

現在您可以恢復剛剛備份的數據庫,刪除__MigrationHistory表中的所有行並插入之前保存的那一行。在此之後,實體框架將正確地認爲數據庫和模型是最新的,並且這隻能通過初始化遷移步驟來實現,並且這樣您可以保留所有數據。

當然爲了對多個數據庫執行此操作,只需要執行一次這些步驟,並且只需刪除__MigrationHistory表中的當前行併爲新遷移步驟插入新行即可。

+0

感謝您的回答,但我不明白最後一部分。如果我刪除當前數據庫,如何使用新數據庫的__MigrationHistory表? – Llm

+0

編輯我的文章是一個更詳細一點,現在它包含所有的步驟,而不僅僅是一個關於怎麼做的草案。 –

+0

好,非常感謝。 – Llm