• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
hambert
哪里有抱怨,哪里就有商机
博客园    首页    新随笔    联系   管理    订阅  订阅

EF Code First之困扰

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

posted @ 2014-09-29 11:50  hambert  阅读(2817)  评论(18)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3