Migration 常用命令
- Add-Migration Init --其中Init是你的版本名稱
- update-database Init --更新數據庫操作 init為版本名稱
- Add-Migration EditPwdLength --同上,不在解釋
- update-database EditPwdLength
- script-migration --生成腳本
- remove-migration --刪除最新創建的遷移,add-migration后,還沒有update-database時候可以使用,updata后不可使用
migration數據遷移非常的簡單,大家在學習的時候,如果只有一個項目,實際上遷移是相對非常順利的,坑是當你在生產環境中,項目越來越多,比如微服務有10幾個項目的時候,就會遇到Build failed.的情況;
遇到異常 add-migration Build failed 解決辦法
- 檢查項目是否是啟動項(這里有個坑:如果項目使用了DDD,生成要選中Project.Infrastructure,就是我們包含DBContext的類庫,而非Project.API )
- 檢查整個解決方案是否可以編譯通過
- 上述不行,把其他項目卸載試試
- 首先一定要執行dotnet restore 查看網站的依賴關系
- 如果生成解決方案出現生成成功,但是編譯跳過N個項目這種也不行,要么排除掉該生產失敗的項目
遇到 “無法將“Add-Migration”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑,請確保路徑正確,然后再試一次。”錯誤的排查思路,說明目前沒有找到Microsoft.EntityFrameworkCore.Tools工具包,可以使用以下2種方案來修復:
方案一:
執行命令一:Import-Module C:\Users\{用戶名}\.nuget\packages\microsoft.entityframeworkcore.tools\{core版本}\tools\EntityFrameworkCore.psd1
執行命令二:Get-Verb
方案二:
Install-Package Microsoft.EntityFrameworkCore.Tools 安裝工具包(我喜歡使用這種方案)
遇到“Method 'get_Info' in type 'MySql.Data.EntityFrameworkCore.Infraestructure.MySQLOptionsExtension' from assembly 'MySql.Data.EntityFrameworkCore, Version=8.0.18.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' does not have an implementation.”的解決方案
目前是因為MySql.Data.EntityFrameworkCore 8.0.18.0驅動包不支持Net Core3.1版本;使用Pomelo.EntityFrameworkCore.MySql即可