标签:style blog color io os ar 数据 sp div
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_Account 14 { 15 AccountName = "admin", 16 NickName = "管理员", 17 AccountPwd = "123456", 18 Email = "4564589@qq.com", 19 Phone = "13289463547" 20 }); 21 } 22 }
可是,我发现DbMigrationsConfiguration依然有不少问题,比如修改字符串长度限制的话执行增量更新数据库是会报错的,去除带外键的字段加带外键的字段也容易报错,并且一旦出错基本就只能删除数据库重新执行了,也就是说DbMigrationsConfiguration并不是很可靠,谁知道怎么解决这个困扰呢。。。
标签:style blog color io os ar 数据 sp div
原文地址:http://www.cnblogs.com/hambert/p/3999901.html