EF Code First之困扰_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > EF Code First之困扰

EF Code First之困扰

 2014/9/29 13:04:21  hambert  程序员俱乐部  我要评论(0)
  • 摘要:CodeFirst自动更新数据库有几种方法CodeFirst什么都不做Database.SetInitializer<ShopContext>(null);发布网站的话一般要在Application_Start方法里加上这句,发布后不需要CodeFirst了。CodeFirst总是重建数据库并重设数据库种子Database.SetInitializer(newDropCreateDatabaseAlways<MyContext,DAL.Configuration>())
  • 标签:

  Code First自动更新数据库有几种方法

  Code First什么都不做

Database.SetInitializer<ShopContext>(null);

  发布网站的话一般要在Application_Start方法里加上这句,发布后不需要Code First了。

  Code First总是重建数据库并重设数据库种子

Database.SetInitializer(new DropCreateDatabaseAlways<MyContext, DAL.Configuration>());

  Code First仅在模型更改时重建数据库并重设数据库种子

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext, DAL.Configuration>());

  可是这几种在开发阶段都不适合,因为我并不希望重建数据库,只是想增量更新数据库,于是又找到一种

  Code First增量更新数据库并增量更新数据库种子

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并不是很可靠,谁知道怎么解决这个困扰呢。。。

上一篇: ASP.NET跨服务器上传文件的相关解决方案 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名