2013年11月12日 星期二

Model 更動欄位時後出現「未套用自動移轉,因為這可能會造成資料遺失」

當我針對一個 Model 做欄位上的字數限制更動時


要將 CompanyCode 欄位字數最大限制 (MaxLength) 從 50 改為 40,然後重新執行網站測試,結果發現以下錯誤:


這大概是程式人員在寫 MVC 碰到會很頭大的問題吧! 因為我有做 Code First 自動轉移,所以後來去找了一下怎麼處理,有人是在主控台下 Update-Database -Script -Force 把 T-Sql 叫出來給使用者確認,但我叫出來是空的。

最後找到問題所在,就是要在 「Migration\configuration.cs」裡面 AutomaticMigrationsEnabled 下加上一個 AutomaticMigrationDataLossAllowed 為 true。看起來像這樣:
public Configuration()
{
    AutomaticMigrationsEnabled = true;
    AutomaticMigrationDataLossAllowed = true;
}

因為資料本身長度為 50,如果改為 40,則原本長度 40 以上的資料會遺失,因此轉移失敗,但加上 AutomaticMigrationDataLossAllowed 的意思就是說不管那些資料重不重要,反正林北就是要轉這是一組非常有魄力的指令。推薦給有魄力的人使用。


1 則留言 :

  1. 推 反正林北就是要轉。這是一組非常有魄力的指令

    回覆刪除

Related Posts Plugin for WordPress, Blogger...