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

Entity framework 我有几个EF迁移。如果更改连接字符串并运行数据库更新,会发生什么情况?,entity-framework,ef-code-first,migration,database-migration,entity-framework-migrations,Entity Framework,Ef Code First,Migration,Database Migration,Entity Framework Migrations,我在开发过程中一直在更新我的实体,这导致了一些迁移和更新数据库命令,并将其迁移到一个特定的数据库 如果我更改连接字符串(例如,因为新数据库位于SQL Server的更高版本上),然后再次运行数据库更新,会发生什么情况?我的印象是EF将检测新数据库,运行我的所有迁移,并生成一个脚本并执行,这样我的新数据库就拥有了与上次迁移时完全相同的所有表、列和关系。我是否可以更改连接字符串,然后按预期获得新数据库 许多人告诉我,我必须为我想使用EF操作的每个数据库创建一个单独的部署项目,但这似乎相当乏味。如果有

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

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


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

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

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

Update-Database -TargetMigration migrationName
这将有效地恢复迁移,只需确保删除添加到解决方案目录的迁移。(经常在分支/数据库之间切换时,有时会发生这种情况,可能会节省一些时间)

“我是否可以更改连接字符串,然后按预期获得新数据库?”

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

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


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

我应该说明连接字符串是没有迁移历史记录表的空数据库的连接字符串。即使如此,这是否仍被视为迁移历史不匹配?否,因为它将从迁移文件的开始进行更新,它将按顺序运行这些文件,并且在运行时每个文件都将与它的迁移历史不匹配