[.Net]使用ABP 資料庫遷移migration遇到的坑及解決方案

 問題:在使用Update-Database時,突然出現「資料庫中已存在名為 ‘XXX’ 的對象」。

檢查發現__EFMigrationsHistory表中的MigrationId與項目中的EntityFrameworkCore項目中的Migrations內容有不同的地方。

ABP的更新機制是對比資料庫的id與Migrations各文件Id,如果資料庫缺少則往下繼續執行,但如果有id衝突,則會認為產生分支,從第一個開始執行了。結果造成讀到的全部是CREATE TABLE 的操作,從而產生衝突。

 

 

解決辦法:修改MigrationID與源文件文件名一致,如下圖,我已將20210618072019_init_0618.cs改成了20210618070222_init_0618.cs 雖然遷移名稱都是init_0618,但是ABP還是會根據Id判斷一致性的。

當然光改文件名還不行,要去Design文件下更改Migration標籤