Code First自動更新數據庫有幾種方法
Database.SetInitializer<ShopContext>(null);
發布網站的話一般要在application_Start方法里加上這句,發布后不需要Code First了。
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext, DAL.Configuration>());
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext, DAL.Configuration>());
可是這幾種在開發階段都不適合,因為我并不希望重建數據庫,只是想增量更新數據庫,于是又找到一種
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, DAL.Migrations.Configuration>());
其中DAL.Migrations.Configuration如下
1 public class Configuration : DbMigrationsConfiguration<MyContext> 2 { 3 public Configuration() 4 { 5 //允許代碼自動遷移數據庫 6 AutomaticMigrationsEnabled = true; 7 //允許自動遷移時數據丟失(如刪除列) 8 AutomaticMigrationDataLossAllowed = true; 9 }10 11 PRotected override void Seed(MyContext context)12 {13 context.Account.AddOrUpdate(o => o.AccountName, new SH_Account14 {15 AccountName = "admin",16 NickName = "管理員",17 AccountPwd = "123456",18 Email = "4564589@QQ.com",19 Phone = "13289463547"20 });21 }22 }
可是,我發現DbMigrationsConfiguration依然有不少問題,比如修改字符串長度限制的話執行增量更新數據庫是會報錯的,去除帶外鍵的字段加帶外鍵的字段也容易報錯,并且一旦出錯基本就只能刪除數據庫重新執行了,也就是說DbMigrationsConfiguration并不是很可靠,誰知道怎么解決這個困擾呢。。。
|
新聞熱點
疑難解答