什麼是Code First Migration
簡單的說Code First Migration是一種建置管理資料庫的方式, 以往要建立或修改資料庫時, 通常是先寫SQL去作增刪修, 然後再去修改程式裡映射的類別 
而Code First Migration的作法恰好相反
先建立映射的類別或是直接修改映射的類別中的屬性,  然後再透過Entity Framework幫我們把差異的部分直接同步回資料庫
基本上有三個步驟, 依序執行底下三個指令
Enable-Migration
初始化Migration 的環境, 指令執行完後專案底下會多 Configuration.cs 用來設定Migration的方式
如:
AutomaticMigrationsEnabled = false;
Add-Migration <名稱>
這個指令會去抓Web.config中的 connection string, 然後連到DB去檢查Table的schema跟目前程式中映射的類別有無衝突, 然後建立DbMigration類別, 所有的衝突都會被填到DbMigration類別中
以下的例子是執行了Add-Migration Init,
    public partial class Init : DbMigration 
    { 
        public override void Up() 
        { 
            CreateTable( 
                "dbo.Employees", 
                c => new 
                    { 
                        Id = c.Int(nullable: false, identity: true), 
                        Name = c.String(nullable: false, maxLength: 40), 
                        Title = c.String(nullable: false, maxLength: 40), 
                        DepartmentNumber = c.String(nullable: false, maxLength: 40), 
                        PhoneNumber = c.String(nullable: false, maxLength: 40), 
                        Photo = c.String(), 
                        LocationImgUrl = c.String(), 
                        Location = c.String(maxLength: 40), 
                    }) 
                .PrimaryKey(t => t.Id) 
                .Index(t => t.Name, unique: true); 
        } 
        public override void Down() 
        { 
        } 
    } 
 | 
Update-database
最後要將產生的migration套用到資料庫時, 必須執行Update-database
這個指令會根據connection string連到資料庫去看一下migration table裡的migration紀錄, 若專案中的migration比較新就會被套用到資料庫
留言
張貼留言