我有几个 EF 迁移。如果我更改连接字符串和 运行 数据库更新会怎样?

I have several EF Migrations. What happens if I change the connection string and run database update?

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

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

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

如果有不同的表和列,它会立即爆炸并在不匹配的 column/table 名称上出现异常,如果您的数据库完全相同(并且具有相同的迁移历史),它应该更新它。

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

Update-Database -TargetMigration migrationName

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

"Can I just change the connection string and I'll get the new database as expected?"

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

"Many tell me that I have to create a separate deployment project for each database I want to manipulate with EF"

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