最近用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>());