圖文詳解 解決 MVC4 Code First 數據遷移


在使用Code first生成數據庫后

當數據庫發生更改時 運行程序就會出現數據已更改的問題  這時可以刪除數據庫重新生成解決

但是之前的數據就無法保留  為了保留之前的數據庫數據  我們需要使用到Code first數據遷移

首先如果需要更改數據結構  必須是先更改model類 然后使用Code firs數據遷移  如果直接先更改了數據庫 則使用數據遷移會報錯 

使用Code firs數據遷移圖解

      工具--》庫文件包程序管理器--》程序包管理控制台  如圖

注意觀察 默認項目  和程序包源  

因為只有安裝了EF框架 才能使用 所以只有把 DBContext.cs 放在默認啟動目錄下才能使用

然而我們在項目開發時  我們並不會這么做 如果只是引用了EF 並不能達到安裝EF的效果 后面會說明 可以采用如圖下方法

當把DBContext.cs 放在其他目錄下時 這里用Model事例

 

把默認選擇為model 直接執行下面的命令會報錯  這是因為此目錄缺少EF5.0 我們需要安裝EF5.0

執行此命令 Install-Package EntityFramework -Version 5.0.0  安裝EF   次處EF以5.0版本為例  安裝后Model類如下圖
 
 
安裝后Model類下會出現 packages.config
 
現在我們就可以正常的開始操作數據遷移了
首先執行命令 Enable-Migrations -ContextTypeName MovieDBContext 開啟Code First遷移  開啟后會出現如下圖
 
開啟后程序會默認添加Migrations這個文件夾  打開 configuration.cs
 
 public Configuration()
 {
           AutomaticMigrationsEnabled = false;
 }

將AutomaticMigrationsEnabled = false; 改為AutomaticMigrationsEnabled = true; 開啟自動 Code first 遷移

接下來有兩種方法  第一種方法

執行命令 add-migration Initial   為遷移“Initial”搭建基架。執行后如下圖

 

代碼先行遷移機制在Migrations文件夾下創建另外一個類文件,文件名為時間戳+下划線+ Initial.cs,該類將被執行,創建數據庫架構。隨后,Seed方法將被執行,測試數據被添加其中。

然后執行命令 update-database  即可完成數據遷移。。。

第二種方法

執行命令 add-migration AddRatingMig   為遷移“AddRatingMig   ”搭建基架。執行后如下圖

 

代碼先行遷移機制在Migrations文件夾下創建另外一個類文件,文件名為時間戳+下划線+ AddRatingMig.cs,該類將被執行,自動比對與數據庫差異,創建數據庫架構。隨后,Seed方法將被執行,測試數據被添加其中。

然后執行命令 update-database  即可完成數據遷移。。。

這樣就實現了修改Model類后不刪除數據庫重建  使用Code first 遷移數據   也不用擔心之前的數據會被刪除了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM