我在我的应用程序中首先使用实体框架代码。但是在更新模型后使用它时,每次我必须启用自动迁移并使用包管理器控制台运行update-database
。有没有人有这方面的解决方案,我们是否可以在不使用包管理器控制台的情况下自动执行此操作和update-database
。
答案 0 :(得分:1)
您只需运行Enable-Migrations
一次,即可生成Configuration.cs
类和Initial
迁移。之后,每当您更改模型时,您必须通过运行Add-Migration
生成新的迁移,并且还必须运行Update-Database
以将迁移应用于您的数据库,但您不需要运行再次Enable-Migrations
。
如果要自动执行该过程,可以通过在AutomaticMigrationsEnabled = true
类的构造函数中设置Configuration
来启用自动生成迁移,并在MigrateDatabaseToLatestVersion
中使用DbContext
数据库初始化程序{1}}。这样您就可以只更改模型代码,而无需对Package Manager控制台执行任何操作,无需Add-Migration
或Update-Database
。在创建项目之后,您仍需要在开始时运行Enable-Migrations
一次,以生成Initial
迁移。
无论如何,自动迁移可能会导致一些问题,我不建议您使用它们。因此,只要模型发生变化,我就会继续执行手动Add-Migration
命令。如果您使用Update-Database
数据库初始化程序,则仍可以跳过MigrateDatabaseToLatestVersion
。
另一种方法是使用DbMigrator
从代码中运行等效于Update-Database
的内容(但如果您使用的是MigrateDatabaseToLatestVersion
,则无需执行此操作数据库初始化程序):
var migrator = new DbMigrator(new DbMigrationsConfiguration());
migrator.Update();