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

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

在我们的生产环境中,我们有一个自动部署脚本,可以关闭我们的站点,运行迁移,然后将其重新上线。当不需要运行任何迁移时,我们希望通过切换到新代码来避免网站关闭。

实体框架是否有像“Update-Database”这样的命令,可以让我们检查是否有要运行的迁移?

c# asp.net-mvc entity-framework
3个回答
21
投票

DbMigrator
类具有
GetPendingMigrations
方法,听起来正是您要寻找的方法。应该是这样的

YourMigrationsConfiguration cfg = new YourMigrationsConfiguration(); 
cfg.TargetDatabase = 
   new DbConnectionInfo( 
      theConnectionString, 
      "provider" );

DbMigrator dbMigrator = new DbMigrator( cfg );
if ( dbMigrator.GetPendingMigrations().Any() )
{
   // there are pending migrations
   // do whatever you want, for example
   dbMigrator.Update(); 
}

4
投票

我将

DbContext.Database.CompatibleWithModel()
与 EF 6.1.3 一起使用


0
投票

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

dotnet ef migrations has-pending-model-changes

来源

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