模型更改後更新數據庫 - 實體框架7


我使用最新的ASP.NET5 MVC 6實體框架7創建了一個應用程序並使用設置遷移

dnx . ef migration add Initial
dnx . ef migration apply

這有效,但是當我對模型進行更改時,數據庫不會更新。我想在運行程序時更改模型後自動更新數據庫。

我的研究只向我指出了似乎不適合實體框架7的舊信息。

我目前的代碼:

dnx . ef migration add Initial
dnx . ef migration apply

有人能指出我正確的方向嗎?

我相信它可以用來做這樣的事情:

dnx . ef migration add Initial
dnx . ef migration apply

一般承認的答案

您必須從命令行手動運行EF7遷移,或者從代碼調用Database.Migrate,EF7中沒有任何自動化(經過深思熟慮的決定),並且在更改模型後,創建新的遷移


熱門答案

在創建遷移和更新數據庫結構的過程之間似乎存在一些混淆。

在EF7中,您無法再自動生成遷移(當前數據庫結構與實體定義之間的差異)。要使用“遷移添加”命令在命令行完成此操作。

但是,更新數據庫的結構仍然可以通過代碼完成。這是使用dbContext.Database.Migrate()方法完成的。您可以在啟動時將其連接起來,這樣當您的應用程序首次啟動時,它將確保您的數據庫已與當前版本的應用程序保持同步。

所以你的開發工作流程可以是:

  1. 修改實體定義
  2. 運行“遷移添加”命令
  3. 啟動你的應用*

    • 上面的數字3假設您在啟動時連接了上面提到的Migrate()調用。否則,您還必須手動執行“數據庫更新”命令。




許可下: CC-BY-SA
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因