我一直在更新开发中的实体,这导致了一些迁移和更新数据库命令到特定数据库。
如果我更改连接字符串会发生什么情况(例如,因为新数据库位于更高版本的SQL Server上),然后再次运行database update
?我的印象是EF将检测新数据库,运行我的所有迁移,并生成一个脚本并执行,以便我的新数据库具有与上次迁移离开时完全相同的所有表,列和关系。我可以只更改连接字符串,我会按预期获得新数据库吗?
许多人告诉我,我必须为每个我想用EF操纵的数据库创建一个单独的部署项目,但这似乎相当繁琐。
答案 0 :(得分:1)
如果存在不同的表和列,它会立即弹出不匹配的列/表名称的异常,如果您的数据库完全相同(并且在相同的迁移历史记录中),它应该更新它。
如果您有两个不在同一迁移历史记录中的数据库,则可以运行
Update-Database -TargetMigration migrationName
这将有效地还原迁移,只需确保删除添加到解决方案目录的迁移。 (这有时会在分支/数据库之间切换时发生,并且可能会节省一些时间)
“我可以只更改连接字符串,我会按预期获得新数据库吗?”
只要迁移历史记录不匹配且连接字符串指向正确的位置。
“很多人告诉我,我必须为我想用EF操作的每个数据库创建一个单独的部署项目”
如果您使用的是Visual Studio,则可以根据需要创建不同的发布配置文件