Asp.net-Mvc

EF 4 程式碼如何首先處理生產環境中的架構更改?

  • March 17, 2022

傳統上,我總是手工編寫我的 sql 腳本,因此它們既漂亮又乾淨(我不喜歡生成的腳本)並且發佈到發布,我提供了一個全新的安裝腳本和一個來自以前版本的遷移腳本,它創建了新的表,更改現有表等。這都是非常標準的。

我真的沒有太多時間先玩 EF 4 程式碼,但如果它在生產環境中實際上是可行的,我很感興趣使用它。

假設您有一種程式碼優先的方法,如果數據庫不存在,將自動創建數據庫。如果您發布具有架構/模型更改的新版本軟體會發生什麼。EF 是否足夠智能以更新數據庫架構以匹配更新後的 EF 模型?

設想

  1. 客戶端在其伺服器上安裝 asp.net MVC 網站。首次執行時,會創建一個新數據庫
  2. 客戶使用網站一段時間,數據庫中填充了一些數據
  3. 同時發布了新版本的網站,並更改了 EF 模型
  4. 客戶端下載新版本,部署網站並指向現有數據庫

程式碼首先只對初始部署有用,還是足夠聰明地更新現有數據庫版本以像這樣發布?

從 EF CTP4 開始,每次更改對像模型時都會刪除並重新創建數據庫(這不是預設約定,您必須通過設置數據庫初始化策略明確告訴 EF Code-First 這樣做)。

話雖這麼說,EF 團隊正在積極開發數據庫演進(又名遷移)解決方案,該解決方案可以準確解決您的場景:隨著您的對像模型隨著時間的推移而發生變化,該解決方案將演變數據庫架構,本質上試圖將數據庫更改為返回與您的模型同步,而不是重新創建它。

根據 EF 團隊的說法,此功能將作為 EF 下一個版本的一部分提供,該版本有望在 2011 年第一季度發布。

引用自:https://stackoverflow.com/questions/4211323