检查实体框架中待处理的迁移?

问题描述 投票:0回答:2

在实体框架 6 中,我使用 Update-Database 命令来应用迁移。我有三个需要处理的环境(DEV、QA 和 PROD),并使用

升级它们
Update-Database -ConnectionStringName DEV 

但是,现在我想知道我的 PROD 环境位于哪个迁移,以及如果我调用 Update-Database 将应用哪些迁移。

是否有命令可以检查哪个迁移是最新应用的,以及如果我运行 Update-Database 将应用哪个迁移?

entity-framework entity-framework-6
2个回答
24
投票

要查看哪些迁移已应用于数据库,请使用命令

Get-Migrations
:

Get-Migrations -ConnectionStringName PROD

您还可以查看右侧数据库中表

__MigrationsHistory
的内容。它包含有关应用于数据库的所有迁移的信息。

应用的下一个迁移取决于项目中现有的迁移文件。迁移文件名包含一个时间戳前缀,它指定生成迁移文件的时间(除非您使用

-force
参数,该参数可能会导致重用现有迁移文件并保留其现有时间戳字符串)。根据该时间戳应用迁移。因此,迁移文件的字母顺序表示它们的应用顺序。

检查接下来将应用哪个迁移的安全方法是使用

Update-Database
参数运行
-Script
,这会生成用于迁移的 SQL 脚本但不运行它。因此,如果您运行真实的
Update-Database
,您可以看到将应用哪种迁移。

更新:在 Entity Framework Core 中此命令不可用。您仍然可以检查

__MigrationsHistory
表内容。要生成无需运行即可执行的 SQL 脚本,您可以使用命令
Script-Migration


0
投票

在 .NET 8 中添加了此功能,我们现在可以从 CLI 中进行检查:

dotnet ef migrations has-pending-model-changes

来源

© www.soinside.com 2019 - 2024. All rights reserved.