摘要:[asp.net MVC]CodeFirst專案設定啟動移轉Enable-Migrations
key word: migration移轉, table change
目的:資料庫的某個table增減欄位或是有任何變更時
綱要:不管是自動移轉或非自動移轉,當資料庫的table有變更的時候
其實都還是要下指令update-database,
差別只在於非自動移轉多了一個前置步驟add-migration
要設定自動移轉的話,就用-ContextTypeName參數以及-EnableAutomaticMigrations
-ContextTypeName後面就接著你要設定自動移轉的DBContext名稱,
-EnableAutomaticMigrations 後面不用接任何參數,意思是設定為自動移轉
如下:
Enable-Migrations -ContextTypeName CyclingTrain.Models.CyclingTrainContext -EnableAutomaticMigrations
要設定非自動移轉的話,只要用-ContextTypeName參數,就夠了,如下:
Enable-Migrations -ContextTypeName CyclingTrain.Models.CyclingTrainContext
以後只要Model有做了任何變更,例如:我們在GuestBook.cs裡面新增了一個欄位
public string aaa { get; set; }
那下一步就需要先新增一個移轉,移轉的名稱自己取,然後在Migration資料夾裡面你會看到多了一個移轉的檔案
Add-Migration addAAAColumnGuestBook
然後再下更新資料表的指令,-verbose可下可不下,只是會順便秀出更新table的一些SQL而已
update-database -verbose
這樣非自動移轉就完成
如果要在自動移轉的情形下新增某個table某某欄位的話
就直接下
update-database -verbose
就可以了
想當初我還一直以為自動移轉就完全不用下指令
直接按下F5執行的時候visual studio就會自己跑移轉
最近終於懂了,還是得下個一行指令
補充:
如果移轉是要刪除某某欄位的話,記得加上-force的參數
不然是不會跑的,因為.net是怕我們刪除欄位之後
連帶造成資料遺失,如果是自動移轉,而且要刪除欄位的指令如下:
update-database -force