EF Code First 数据迁移

Code First数据迁移三步曲

一、为模型更改设置 Code First 数据迁移
1、工具—>库程序包管理器—>程序包管理器控制台—>输入“Enable-Migrations” 或者

     Enable-Migrations

-ContextTypeName Mvc.Models.DataContext

Enable-Migrations -ContextTypeName 命名空间.上下文名称

     -Force  命令行后可跟强制执行

     注:如果正确的话 则显示“已为项目 xxx启用 Code First 迁移。”,

    Enable-Migrations命令创建了一个Migrations文件夹和Configuration.cs文件EF <wbr>Code <wbr>First <wbr>数据迁移

    EF <wbr>Code <wbr>First <wbr>数据迁移

打开configuation.cs,将作出如下修改:

[csharp] view plain copy
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
2、程序包管理器控制台—>输入“add-migration Initial”创建初始化迁移。

    注:名称“Initial”是随意命名,即要添加的字段。用来命名创建好的迁移文件。

3、程序包管理器控制台—>输入“update-database”
4、运行程序,更新完毕。

二、进一步
问题已经解决了,我们再来深入一下这种迁移方式。
当我们增加列(增加实体字段)时,可以不必重复上面的所有操作。
1、只需要将\Migrations\Configuration.cs文件中的AutomaticMigrationsEnabled = false;改成true
2、工具—>库程序包管理器—>程序包管理器控制台—>输入“update-database”

三、当我们删除列(删除实体字段)时,同样使用上面的操作,没有成功,报会丢失数据,

   所以不能简单地执行“update-database”就能完成。

1、执行命令“add-migration Initial”
2、执行命令“update database”
3、运行程序,更新完毕

四、很强大的迁移

public class ContactContext : DbContext
{
public ContactContext()
: base(“name=DefaultConnection”)
{
//自动创建表,如果Entity有改到就更新到表结构
Database.SetInitializer(new MigrateDatabaseToLatestVersion());
}

   protected override void OnModelCreating(DbModelBuilder modelBuilder)
   {
      modelBuilder.Conventions.Remove(); //表名为类名,不是上面带s的名字  //移除复数表名的契约
      modelBuilder.Conventions.Remove();    //不创建EdmMetadata表  //防止黑幕交易 要不然每次都要访问 EdmMetadata这个表
   }


   public DbSet Cities { get; set; }
   public DbSet

Area { get; set; }
public DbSet Campaign { get; set; }
}

internal sealed class ReportingDbMigrationsConfiguration : DbMigrationsConfiguration
{
   public ReportingDbMigrationsConfiguration()
   {
      AutomaticMigrationsEnabled = true;//任何Model Class的修改將會直接更新DB
      AutomaticMigrationDataLossAllowed = true;
   }
}

参考网址
http://www.cnblogs.com/hugh251325/archive/2013/03/21/2972431.html

http://www.cnblogs.com/youring2/p/mvc-5-adding-a-new-field.html

http://blog.csdn.net/zy332719794/article/details/8845405
http://www.ejutuo.com/bbs/thread-3225-1-1.html

http://www.cnblogs.com/chinabc/archive/2013/01/16/2846062.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值