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