如何仅在不使用程序包管理器控制台的情况下启用代码迁移

时间:2016-11-06 05:44:55

标签: entity-framework ef-code-first entity-framework-6 ef-migrations

我在我的应用程序中首先使用实体​​框架代码。但是在更新模型后使用它时,每次我必须启用自动迁移并使用包管理器控制台运行update-database。有没有人有这方面的解决方案,我们是否可以在不使用包管理器控制台的情况下自动执行此操作和update-database

1 个答案:

答案 0 :(得分:1)

您只需运行Enable-Migrations一次,即可生成Configuration.cs类和Initial迁移。之后,每当您更改模型时,您必须通过运行Add-Migration生成新的迁移,并且还必须运行Update-Database以将迁移应用于您的数据库,但您不需要运行再次Enable-Migrations

如果要自动执行该过程,可以通过在AutomaticMigrationsEnabled = true类的构造函数中设置Configuration来启用自动生成迁移,并在MigrateDatabaseToLatestVersion中使用DbContext数据库初始化程序{1}}。这样您就可以只更改模型代码,而无需对Package Manager控制台执行任何操作,无需Add-MigrationUpdate-Database。在创建项目之后,您仍需要在开始时运行Enable-Migrations一次,以生成Initial迁移。

无论如何,自动迁移可能会导致一些问题,我不建议您使用它们。因此,只要模型发生变化,我就会继续执行手动Add-Migration命令。如果您使用Update-Database数据库初始化程序,则仍可以跳过MigrateDatabaseToLatestVersion

另一种方法是使用DbMigrator从代码中运行等效于Update-Database的内容(但如果您使用的是MigrateDatabaseToLatestVersion,则无需执行此操作数据库初始化程序):

var migrator = new DbMigrator(new DbMigrationsConfiguration());
migrator.Update();