实体框架 - 检查挂起迁移

6
在我们的生产环境中,我们有一个自动化部署脚本,它会关闭我们的网站,运行迁移,然后将其重新上线。我们希望通过在没有需要运行的迁移时切换到新代码来避免关闭网站。
Entity Framework是否有像“Update-Database”这样的命令,可以让我们检查是否有需要运行的迁移?
2个回答

20
< p > DbMigrator类具有GetPendingMigrations方法,这似乎正是您要查找的确切方法。应该是这样的:< /p >
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(); 
}

我还没有开始实现这个,但那看起来就是我正在寻找的东西。 - Mike B

4

我使用EF 6.1.3中的DbContext.Database.CompatibleWithModel()


1
如果手动添加了迁移步骤(例如,枚举值已更改,您可能需要应用脚本来更新数据库中的相应字段),则 DbContext.Database.CompatibleWithModel() 将返回 true。这与原始请求不符! - Marcel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接