[文章內容來源於Microsoft Doc]
開發期間,數據模型將發生更改並與數據庫不同步。 可以刪除該數據庫,讓 EF 創建一個新的數據庫來匹配該模型,但此過程會導致數據丟失。 EF Core 中的遷移功能能夠以遞增方式更新數據庫架構,使其與應用程序的數據模型保持同步,同時保留數據庫中的現有數據。
遷移包括命令行工具和 API,可幫助執行以下任務:
- 創建遷移。 生成可以更新數據庫以使其與一系列模型更改同步的代碼。
- 更新數據庫。 應用掛起的遷移更新數據庫架構。
- 自定義遷移代碼。 有時,需要修改或補充生成的代碼。
- 刪除遷移。 刪除生成的代碼。
- 還原遷移。 撤消數據庫更改。(sqlite不支持表和字段的重命名等給還原帶來很多問題)
- 生成 SQL 腳本。 可能需要一個腳本來更新生產數據庫,或者對遷移代碼進行故障排除。
- 在運行時應用遷移。 當設計時更新和正在運行腳本不是最佳選項時,調用
Migrate()方法。
創建遷移
PowerShell-> Add-Migration InitialCreate
.Net Core CLI-> dotnet ef migrations add InitialCreate
更新數據庫
PowerShell-> Update-Database
.Net Core CLI-> dotnet ef database update
自定義遷移代碼
PowerShell-> Add-Migration AddProductReviews
.Net Core CLI-> dotnet ef migrations add AddProductReviews
修改遷移基架中的代碼,然后更新數據庫。
空遷移
有時模型未變更,直接添加遷移也很有用處。 在這種情況下,添加新遷移會創建一個帶空類的代碼文件。 可以自定義此遷移,執行與 EF Core 模型不直接相關的操作。 可能需要通過此方式管理的一些事項包括:
- 全文搜索
- 函數
- 存儲過程
- 觸發器
- 視圖
刪除遷移
PowerShell-> Remove-Migration
.Net Core CLI-> dotnet ef migrations remove
還原遷移
PowerShell-> Update-Database LastGoodMigration
.Net Core CLI-> dotnet ef database update LastGoodMigration
生成 SQL 腳本
PowerShell-> Script-Migration
.Net Core CLI-> dotnet ef migrations script
在運行時應用遷移
myDbContext.Database.Migrate();
