如何在不使用包管理器控制台的情况下仅通过代码启用迁移
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-Migration
或 Update-Database
。在创建项目后,您仍然需要 运行 Enable-Migrations
一次,以生成 Initial
迁移。
无论如何,自动迁移会导致一些问题,我真的不建议您使用它们。因此,每当您的模型发生变化时,我都会继续执行手动 Add-Migration
命令。如果您使用 MigrateDatabaseToLatestVersion
数据库初始化程序,您仍然可以跳过执行 Update-Database
。
另一种方法是使用 DbMigrator
到 运行 相当于代码中的 Update-Database
(但如果您使用MigrateDatabaseToLatestVersion
数据库初始化程序):
var migrator = new DbMigrator(new DbMigrationsConfiguration());
migrator.Update();
我在我的应用程序中使用 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-Migration
或 Update-Database
。在创建项目后,您仍然需要 运行 Enable-Migrations
一次,以生成 Initial
迁移。
无论如何,自动迁移会导致一些问题,我真的不建议您使用它们。因此,每当您的模型发生变化时,我都会继续执行手动 Add-Migration
命令。如果您使用 MigrateDatabaseToLatestVersion
数据库初始化程序,您仍然可以跳过执行 Update-Database
。
另一种方法是使用 DbMigrator
到 运行 相当于代码中的 Update-Database
(但如果您使用MigrateDatabaseToLatestVersion
数据库初始化程序):
var migrator = new DbMigrator(new DbMigrationsConfiguration());
migrator.Update();