測試環境:VS2013、Windwos 7
Entity Framework Code First Migrations 資料庫移轉)功能是用來當 model class 有任何修改時可以將這些變動可以自動套用到資料庫中。
本文內容:
啟用資料庫移轉
建立測試用資料
建立初啟移轉基準
更新資料庫
修改Model Class
修改Controller
修改View
修改Seed
建立移轉基準
實際更新至資料庫
啟用資料庫移轉
工具(TOOLS)=>程式庫套件管理員(Library Package Manager)=>套件管理器主控台(Package Manager Console)
PM> Enable-Migrations -ContextTypeName MvcMovie.Models.MovieDBContext
將新建一 Migrations 資料夾,並產生Configuration.cs 檔案
註1: Enable-Migrations的參數除了-ContextTypeName (可指定使用的DB Context)外,還有
-EnableAutomaticMigrations,這個參數是用來宣告 Migration 是採自動或半自動的方式來進行。有加上 -EnableAutomaticMigrations參數時表示採自動升級。
註2: 自動或半自動的升級方式不同處在於: 自動升級方式不要再搭配 add-migration 指令而只要再加上 update-database 指令即完成升級和更新資料庫的系統動作。
建立測試用資料
將Configuration.cs中的Seed Function 用以下程式碼取代,這些程式是用來建立四筆測試資料。
protected override void Seed(MvcMovie.Models.MovieDBContext context)
{
context.Movies.AddOrUpdate( i => i.Title,
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-1-11"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
}
{
context.Movies.AddOrUpdate( i => i.Title,
new Movie
{
Title = "When Harry Met Sally",
ReleaseDate = DateTime.Parse("1989-1-11"),
Genre = "Romantic Comedy",
Price = 7.99M
},
new Movie
{
Title = "Ghostbusters ",
ReleaseDate = DateTime.Parse("1984-3-13"),
Genre = "Comedy",
Price = 8.99M
},
new Movie
{
Title = "Ghostbusters 2",
ReleaseDate = DateTime.Parse("1986-2-23"),
Genre = "Comedy",
Price = 9.99M
},
new Movie
{
Title = "Rio Bravo",
ReleaseDate = DateTime.Parse("1959-4-15"),
Genre = "Western",
Price = 3.99M
}
);
}
記得引用 MvcMovie.Models;
在每次的Migration 發生時(update-database),Code First Migratins (update-database)都會去呼叫 Seed這個方法 (Configuration.cs)。
建立初啟移轉基準
在套件管理器主控台中輸入 add-migration Initial 來建立一個移轉啟始點。
建立成功時系統會在 Migrations 資料夾中自動產生 timestamp_Initial.cs 檔案(如下圖)。
在這個檔案中包含有建立資料庫結構的程式碼。
更新資料庫
在套件管理器主控台中輸入 update-database 來實際產生本次的移轉作業。執行成功後會自動更新資料庫(Local DB File)
修改Model Class
如新增一個欄位等作業。
修改Controller
Controller 中的Create、Edit Action Bind 也要記得加入新欄位。
修改View
Index/Create/Edit/Details/Delete 等View 也要加入新欄位。
修改Seed()
前面由程式自動新建的測試資料中也要加入新欄位和資料。
建立移轉基準
在套件管理器主控台中輸入 add-migration Rating 來建立一個新移轉點。
實際更新至資料庫
在套件管理器主控台中輸入 update-database 來實際產生本次的移轉作業。
沒有留言:
張貼留言