我有几个EF迁移。如果我更改连接字符串并运行数据库更新会发生什么?

时间:2015-12-30 03:23:11

标签: entity-framework ef-code-first migration database-migration ef-migrations

我一直在更新开发中的实体,这导致了一些迁移和更新数据库命令到特定数据库。

如果我更改连接字符串会发生什么情况(例如,因为新数据库位于更高版本的SQL Server上),然后再次运行database update?我的印象是EF将检测新数据库,运行我的所有迁移,并生成一个脚本并执行,以便我的新数据库具有与上次迁移离开时完全相同的所有表,列和关系。我可以只更改连接字符串,我会按预期获得新数据库吗?

许多人告诉我,我必须为每个我想用EF操纵的数据库创建一个单独的部署项目,但这似乎相当繁琐。

1 个答案:

答案 0 :(得分:1)

如果存在不同的表和列,它会立即弹出不匹配的列/表名称的异常,如果您的数据库完全相同(并且在相同的迁移历史记录中),它应该更新它。

如果您有两个不在同一迁移历史记录中的数据库,则可以运行

Update-Database -TargetMigration migrationName

这将有效地还原迁移,只需确保删除添加到解决方案目录的迁移。 (这有时会在分支/数据库之间切换时发生,并且可能会节省一些时间)

  

“我可以只更改连接字符串,我会按预期获得新数据库吗?”

只要迁移历史记录不匹配且连接字符串指向正确的位置。

  

“很多人告诉我,我必须为我想用EF操作的每个数据库创建一个单独的部署项目”

如果您使用的是Visual Studio,则可以根据需要创建不同的发布配置文件