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

How to enable migrations through code only without using Package manager console

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

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

如果你想自动化这个过程,你可以通过在 Configuration class 的构造函数中设置 AutomaticMigrationsEnabled = true 来启用迁移的自动生成,并使用 MigrateDatabaseToLatestVersion DbContext 中的数据库初始值设定项。这将允许您只更改模型代码,而不必使用包管理器控制台执行任何操作,不需要 Add-MigrationUpdate-Database。在创建项目后,您仍然需要 运行 Enable-Migrations 一次,以生成 Initial 迁移。

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

另一种方法是使用 DbMigrator 到 运行 相当于代码中的 Update-Database (但如果您使用MigrateDatabaseToLatestVersion 数据库初始化程序):

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