在实体框架 6 中,我使用 Update-Database 命令来应用迁移。我有三个需要处理的环境(DEV、QA 和 PROD),并使用
升级它们Update-Database -ConnectionStringName DEV
但是,现在我想知道我的 PROD 环境位于哪个迁移,以及如果我调用 Update-Database 将应用哪些迁移。
是否有命令可以检查哪个迁移是最新应用的,以及如果我运行 Update-Database 将应用哪个迁移?
Get-Migrations
:
Get-Migrations -ConnectionStringName PROD
您还可以查看右侧数据库中表
__MigrationsHistory
的内容。它包含有关应用于数据库的所有迁移的信息。
应用的下一个迁移取决于项目中现有的迁移文件。迁移文件名包含一个时间戳前缀,它指定生成迁移文件的时间(除非您使用
-force
参数,该参数可能会导致重用现有迁移文件并保留其现有时间戳字符串)。根据该时间戳应用迁移。因此,迁移文件的字母顺序表示它们的应用顺序。
检查接下来将应用哪个迁移的安全方法是使用
Update-Database
参数运行 -Script
,这会生成用于迁移的 SQL 脚本但不运行它。因此,如果您运行真实的Update-Database
,您可以看到将应用哪种迁移。
更新:在 Entity Framework Core 中此命令不可用。您仍然可以检查
__MigrationsHistory
表内容。要生成无需运行即可执行的 SQL 脚本,您可以使用命令 Script-Migration
。