什麼是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比較新就會被套用到資料庫
留言
張貼留言