使用Code First Enabling Migrations增加欄位

今天在使用.net 4.5的Membership時,在ApplicationUser類別增加欄位後,執行註冊功能會出現
CodeFirst的錯誤如下圖

clip_image001

這是因為Membership是使用CodeFirst,在第一次執行會先幫你建好資料表,但之後類別若有異動欄位,則必須下指令告知來更新資料庫。

執行步驟如下:

1.先在"套件管理器主控台(Package Manager Console)"輸入 Enabling Migrations

ps:此動作在專案只要執行一次

clip_image002

輸入完後在方案總管會看到Mirgrations目錄及第一次產生的類別
檔名結尾_InitialCreate.cs為依目前資料庫內產生的建立語法
Configurations.cs則為Mirgrations的設定檔
clip_image003

2.在類別增加欄位

clip_image004

3.在"套件管理器主控台(Package Manager Console)"輸入 Add-Migrations first

Ps:first為自訂的識別名稱
clip_image005

此時會看到Mirgrations目錄產生一個繼承DbMigration類別,並且已依照增加的欄位將語法產生此部份是讓你自行再客製用,單純加入欄位可以不用修改

clip_image006


4.最後需在下一個指令為Update-Database就會針對資料庫作建立欄位動作

clip_image007

執行完後檢查資料表,已將欄位加入,大功告成
clip_image008

    上述動作其實還可以簡化一些,在Configuration.cs有一個AutomaticMigrationsEnabled的屬性只要設為true後,在類別的欄位異動後執行第4步驟的Update-Database也可以達到同樣的效果,但這只適用較簡易的異動,複雜的異動還是透過DbMigration來客製會比較好。

參考文章
http://blog.sanc.idv.tw/2012/04/entity-framework-code-firstenabling.html

這個網誌中的熱門文章

[.NET Core] 將專案發行至IIS

[TFS] 分支與合併