Entity Framework Migration Essential
使用 Entity Framework 的 Code First 來做資料存取層與既存資料庫溝通時多少都會遇到資料庫 Schema 變更的時候,只是這個時候若是有用到 Code First 來新增表格的話就會遇到像上一篇一樣的問題;執行時期使用資料庫的話會引發錯誤訊息,而且會通知因為資料庫的 Schema 變更需要使用 Migrations 來解決問題。因此這篇文章就是要來說明一般來說使用 Code First 來開發遇到資料庫 Schema 要變更時的正規作法應該怎麼做。 我們就用上一篇所生出來的資料庫來實作看看吧~ 不過為了方便起見,我們就直接先把 Products 這個資料表先刪除,我們來看看用 Code First 的方式開發的話若要新增一個資料表的正規方式是什麼?(這邊正規也只是我在講而已,只是這麼做的話可以免除之後的麻煩) 首先我們要先打開套件管理員的命令列視窗「Tools => Library Package Manager => Package Manager Console」,然後要用 Migrations 的話就要先把功能打開,需要下這樣的指令: 1 PM >> Enable-Migrations ,成功的同時我們的專案會新增一個 Migrations 資料夾,並且會給你一個 Configrations.cs 類別,若沒有要使用自動 Migrations 的話就可以先不用動這個類別的內容。接下來因為需求異動的關係我們需要多一個 Products 資料表來儲存產品的資訊。 Products 的資料表如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /// 產品的實體。 [Table("Products")] public class Product { /// 產品的識別號。 [Key] [ScaffoldColumn(false)] public int ID { get; set; } /// 產品的名稱。 public string Name { get; set; } /// 產品的價格。 public double Price { get; set; } /// 生產產品的工廠名稱。 public string FactoryName { get; set; } } 對於資料庫的 Schema 的異動我們可以在 Package Manager Console 中輸入 Add-Migrations xxxxxx xxxxxx就是新增的類別的名稱,通常會是這次異動的表格、欄位的名稱像是 AddProducts 之類的。這邊我是用 AddTableProducts ...