我首先使用實體框架5代碼並啓用了遷移。我對模型類做了很多修改,現在我有太多的遷移類,因爲在每次更改之後,我都更新了數據庫。 現在我想合併所有的更新以獲得一個「初始類」或2,以便我可以只運行一次update-database命令,如果我必須再次創建我的數據庫。 這可能沒有代碼(太重),我的意思是一個命令,例如? 謝謝。EF 5 - 代碼優先遷移
0
A
回答
1
該解決方案基於您是否希望將現有數據保存在數據庫中(如果您有生產數據庫,這絕對是必需的),或者您可以簡單地刪除數據庫。
一Cuurrent數據庫可以DROP掉
首先,你需要刪除所有遷移步驟並刪除當前的數據庫然後運行命令
add-migration Initial
這樣你就只能有一個遷移步驟而不是很多。
二,必須保留數據
首先創建當前數據庫(在解決方案中設置爲默認數據庫)的備份,然後刪除數據庫,以便在運行add-migration命令時實體框架將認爲不存在遷移尚未應用。
執行完第一部分中描述的步驟後,您將只有一個名爲Initial的遷移步驟。在此之後運行
update-database
命令,這將創建一個數據庫,只有在__MigrationHistory表中的一行但符合當前的模型。從__MigrationHistory表中保存這一行。
現在您可以恢復剛剛備份的數據庫,刪除__MigrationHistory表中的所有行並插入之前保存的那一行。在此之後,實體框架將正確地認爲數據庫和模型是最新的,並且這隻能通過初始化遷移步驟來實現,並且這樣您可以保留所有數據。
當然爲了對多個數據庫執行此操作,只需要執行一次這些步驟,並且只需刪除__MigrationHistory表中的當前行併爲新遷移步驟插入新行即可。
相關問題
- 1. EF代碼優先遷移不編譯
- 2. EF代碼優先4.3:遷移/種子
- 3. EF 6代碼優先遷移跳過
- 4. DDD和EF代碼優先遷移
- 5. 從EF自動遷移到代碼優先遷移
- 6. EntityFramework5代碼優先遷移
- 7. 代碼優先遷移MissingManifestResourceException
- 8. EF代碼優先 -
- 9. 從EF 5生成完整的SQL腳本代碼優先遷移
- 10. 重置EF代碼優先遷移狀態
- 11. WebSecurity.InitializeDatabaseConnection不配合代碼優先遷移
- 12. EF 5代碼首先遷移批量SQL數據播種
- 13. 在EF 5定義導航屬性,代碼首先遷移
- 14. EF 4.3代碼優先遷移 - 解壓縮__MigrationHistory模型
- 15. EF代碼優先數據庫初始化和遷移混亂
- 16. EF代碼優先看不到所有的遷移
- 17. EF代碼優先 - 忘了運行「添加遷移」
- 18. EF代碼優先遷移:SqlCeException更改NTEXT列
- 19. 使用EF代碼優先和遷移的明確ID值
- 20. 試用EF代碼優先和遷移 - 絆腳石
- 21. EF代碼優先 - 運行後遷移處理和清理
- 22. 部署到Azure未運行EF代碼優先遷移
- 23. Sql Anywhere 17 ef代碼優先遷移支持
- 24. 重新排序列與EF 4.3代碼優先遷移
- 25. EF 4.3.1 - 代碼優先自動遷移 - 如何指定列寬
- 26. EF代碼優先自動遷移完全搞砸
- 27. EF代碼優先數據庫遷移 - 如何排除列的遷移?
- 28. 被代碼優先遷移困惑
- 29. 的EntityFramework代碼優先遷移
- 30. 如何啓用代碼優先遷移
感謝您的回答,但我不明白最後一部分。如果我刪除當前數據庫,如何使用新數據庫的__MigrationHistory表? – Llm
編輯我的文章是一個更詳細一點,現在它包含所有的步驟,而不僅僅是一個關於怎麼做的草案。 –
好,非常感謝。 – Llm