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