EF修改model自动更新数据库
最近用MVC+EF学习时遇到修改model后而数据库没更新报错,就在网上找关于数据迁移自动更新数据库的,折腾了大半天终于弄了出来
第一步:在程序包管理器控制台里: Enable-Migrations -ProjectName EF所在的项目名称
第二步:运行后会在字段生成Migrations文件夹,Migrations->Configuration.cs 类里把AutomaticMigrationsEnabled改为true(即设为model有改动自动更新数据库)
如有删除字段则要加 AutomaticMigrationDataLossAllowed = true(可接受自动迁移期间的数据丢失的值)
第三步:在OwnDbContext里
public OwnDbContext() : base("DefaultConnection") { Database.SetInitializer(new MigrateDatabaseToLatestVersion<OwnDbContext, Own.Model.Migrations.Configuration>()); }
PS:在查的一些资料中有些没有第三步,可我的不改这个还是报错改了才可以
或里面为 Database.SetInitializer(new DropCreateDatabaseIfModelChanges<OwnDbContext>());
当你修改完某个model,在 package manager console 中输入Add-Migration model名 会有对应的文件生成,
Update-Database 这个命令会把你对实体的更改 通过 migration文件对应的对数据库进行修改
ps:如果实体模型改变了,也可以使用Add-Migration [迁移文件名] 命令可以生成待迁移文件,最后使用Update-Database命令提交改变。
在Global.asax的方法Application_Start()加:
System.Data.Entity.Database.SetInitializer(new System.Data.Entity.MigrateDatabaseToLatestVersion<MvcOwn.Models.OwnDbContext, Migrations.Configuration>());