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語句。

相關文章
相關標籤/搜索