修改model,映射到表中
1. 当使用EF code first创建数据表后,数据库中会自动创建一个名为:dbo.__MigrationHistory的系统数据表,
如果尚未启用数据库迁移功能,那么每次在应用程序运行时,都会对比当前的model和系统数据表的Model属性
是否一致,如果不一致,默认发生异常。如果启用了迁移功能,这个表格就会记录每次的模型的记录和版本。
2. 启用数据库迁移:
step1:打开程序包管理控制器->输入Enable-Migrations
按下Enter后,Package Manager Console会自动扫描项目中所有数据的上下文(DbContext)类。
如果项目中有多个上下文,则必须选择使用哪个上下文:Enable-Migrations -ContextTypeName
MyContext
step2:更新model(强制)
程序包管理器可以完成的功能:
修改字段
注意:程序包管理程序的权限比较低,如果要修改字段的详细信息,需要到sql Server管理器修改
不能强制删除表
强制添加(在sql server管理中)的字段,在更新时不会被删除。
1.手动实现方法:
public class MyContext : DbContext { public MyContext() : base("name=MyContext") { Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext,MyConfiguration>()); //重要 } public virtual DbSet<Student> Students { get; set; } public virtual DbSet<Course> Courses { get; set; } } internal sealed class MyConfiguration : DbMigrationsConfiguration<MyContext> { public MyConfiguration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; } protected override void Seed(MyContext context) { } }