使用Code First Enabling Migrations增加欄位
CodeFirst的錯誤如下圖
這是因為Membership是使用CodeFirst,在第一次執行會先幫你建好資料表,但之後類別若有異動欄位,則必須下指令告知來更新資料庫。
執行步驟如下:
1.先在"套件管理器主控台(Package Manager Console)"輸入 Enabling Migrations
ps:此動作在專案只要執行一次輸入完後在方案總管會看到Mirgrations目錄及第一次產生的類別
檔名結尾_InitialCreate.cs為依目前資料庫內產生的建立語法
Configurations.cs則為Mirgrations的設定檔
2.在類別增加欄位
3.在"套件管理器主控台(Package Manager Console)"輸入 Add-Migrations first
Ps:first為自訂的識別名稱此時會看到Mirgrations目錄產生一個繼承DbMigration類別,並且已依照增加的欄位將語法產生此部份是讓你自行再客製用,單純加入欄位可以不用修改
4.最後需在下一個指令為Update-Database就會針對資料庫作建立欄位動作
執行完後檢查資料表,已將欄位加入,大功告成
上述動作其實還可以簡化一些,在Configuration.cs有一個AutomaticMigrationsEnabled的屬性只要設為true後,在類別的欄位異動後執行第4步驟的Update-Database也可以達到同樣的效果,但這只適用較簡易的異動,複雜的異動還是透過DbMigration來客製會比較好。
參考文章
http://blog.sanc.idv.tw/2012/04/entity-framework-code-firstenabling.html