CodeFirst数据迁移

1.DBContext的代码以下:数据库

 1 public class Context:DbContext
 2     {
 3         public Context()
 4             : base("name=ConnStr")
 5         {
 6            
 7         }
 8 
 9         public DbSet<Menu> Menus { get; set; }
10     }

2.Menu类以下:工具

 1 [Table("Menu")]
 2     public class Menu
 3     {
 4         [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 5         public int ID { get; set; }
 6         [Required]
 7         public int PID { get; set; }
 8         [Required]
 9         public string Name { get; set; }
10         [Required]
11         public string Url { get; set; }
12     }

Ctrl+F5运行没有问题。ui

3.修改Menu类,改为以下:this

[Table("Menu")]
    public class Menu
    {
        [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ID { get; set; }
        [Required]
        public int PID { get; set; }
        [Required]
        public string Name { get; set; }
        [Required]
        public string Url { get; set; }
        public string Test { get; set; }
    }

再次运行,发现此时报错spa

报错的缘由是由于数据库的结构已经改变,此时有两种方法能够解决该问题。code

1.设置每次数据库结构改变以后都删除原先的数据库再重建blog

只须要加上下面的代码:get

 public Context()
            : base("name=ConnStr")
        {
            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<Context>());
            this.Database.Initialize(true);
        }

这样设置以后再次运行没有问题,可是因为数据库被删掉了再重建的,因此原先的数据都没有了。要想保留原先的数据能够使用Migration数据迁移的方式string

2.数据迁移it

1)点击工具选项卡,选择程序包管理控制台

2)输入命令Enable-Migrations,此时在项目下会新建一个Migrations文件夹,里面包括一个Configuration.cs文件

3)输入命令Add-Migration XXXX,此时会在Migrations文件夹下新建一个yyyyMMddHHmmss_XXXX.cs文件,里面包括一个Down和UP方法,分表表示这次数据迁移回滚和升级的方法

4)输入命令Update-Database-Verbose,数据迁移完成,能够看到数据迁移的SQL语句。

相关文章
相关标签/搜索