Entity Framework Core自動遷移

2019/05/15,EFCore 2.2.4

有兩種方式:

1.使用Migrate()方法

if (DbContext.Database.GetPendingMigrations().Any())
{
    DbContext.Database.Migrate(); //執行遷移
}

Migrate()方法使用前需在程序包管理控制檯執行Add-migration遷移命令。之後程序每次啓動,GetPendingMigrations()都會去檢測是否有待遷移內容,有的話,自動應用遷移。

GetPendingMigrations方法官方文檔說明
獲取在程序集中定義但尚未應用於目標數據庫的所有遷移。

Migrate()方法官方文檔說明
將上下文的任何掛起的遷移應用於數據庫。 如果數據庫尚不存在,將創建它。
請注意,此API與DbContext.Database.EnsureCreated()互斥。 EnsureCreated不使用遷移來創建數據庫,因此以後無法使用遷移更新創建的數據庫。

2.使用EnsureCreated()方法

//如果成功創建了數據庫,則返回true
DbContext.Database.EnsureCreated()

此方法不需要先執行Add-migration遷移命令,如果數據庫不存在,則自動創建並返回true。
如果已經創建了數據庫後,又改動了實體Model和之前的庫存在衝突,要注意刪庫讓它自動重建,否則會報錯。
注意,使用EnsureCreated()創建的數據庫,是不帶有__EFMigrationsHistory表的,所以不會使用該方法創建後無法再使用遷移更新已經創建的數據庫

EnsureCreated方法官方文檔說明
確保上下文的數據庫存在。 如果存在,則不採取任何措施。 如果它不存在,則創建數據庫及其所有模式。 如果數據庫存在,則不會確保它與此上下文的模型兼容。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章