EF 數據遷移問題總結


  在項目中使用Entity Framework的Code First模式,進行數據遷移時,Migration文件夾中存放的是每一次Entity的修改如何同步到數據的操作方法,每個文件中都只有Up和Down這兩個方法。例如第一次數據遷移時,會創建數據表,在程序包管理控制台中輸入命令:add-migration migrationname,會生成一個migrationname.cs的文件,在對應的Migration類文件的代碼如下:

 1 public override void Up()
 2         {
 3             CreateTable(
 4                 "dbo.FileBoxes",
 5                 c => new
 6                     {
 7                         Id = c.Long(nullable: false, identity: true),
 8                         FileNo = c.String(),
 9                         FileTitle = c.String(),
10                         Version = c.String(),
11                         FileType = c.String(),
12                         BoxNo = c.String(),
13                         ManageStyle = c.String(),
14                         Year = c.String(),
15                         Remark = c.String(),
16                     })
17                 .PrimaryKey(t => t.Id);
18             
19         }
20         
21         public override void Down()
22         {
23             DropTable("dbo.FileBoxes");
24         }

  再在程序包管理控制台中輸入命令:update-database,即可將Entity的設計同步到數據庫中。

  當后期對Entity進行了修改時,再次運行 add-migration migrationname 和update-database這兩個命令,即可再生成一個同步文件,並將修改更新到數據庫中,例如將Entity中的Year屬性改為Years,生成的同步文件代碼如下:

public override void Up()
        {
            AddColumn("dbo.FileBoxes", "Years", c => c.String());
            DropColumn("dbo.FileBoxes", "Year");
        }
        
        public override void Down()
        {
            AddColumn("dbo.FileBoxes", "Year", c => c.String());
            DropColumn("dbo.FileBoxes", "Years");
        }

  這里需要注意兩個問題:

  1、不能隨意刪除Migration文件夾內的同步文件,否則數據同步會失敗。本人項目中多次進行Migration,但是將第一次創建數據表的Miragtion文件刪除了,總是update-database失敗,找了好半天才發現原因在這里。

  2、每次add-Migration時取的文件名不能重名。命名時可以按照當天日期拼接當天的版本號組成,例如:20160514001,20160514002。

 


免責聲明!

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



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