我正在尝试在我的应用程序中找出合适的数据库开发过程。我已经尝试使用后/预部署脚本(非常好的功能)、实体框架数据库优先方法(在源代码控制下为每个数据库更改使用单独的脚本)的 Visual Studio 数据库项目,现在我正在处理实体框架代码优先方法。我不得不说,它提供的可能性给我留下了深刻的印象,但我正试图弄清楚如何在开发过程中管理模型中的变化。假设我的公司有以下环境:
LOCALHOST - 对于每个开发人员,TEST - 带有用于测试目的的 SQL Server 数据库的单台机器, PRODUCTION - 带有客户端使用的 SQL Server 数据库的单台机器
现在,每当我在处理应用程序并且代码发生更改时,我可以在每次测试应用程序时删除并重新创建数据库(对于 LOCALHOST 和 TEST 环境也是如此)。我创建了适当的数据库初始化程序,用测试数据为数据库播种,我对它们非常满意。
但是,随着模型更改时的每个新构建,我希望以不会丢失整个数据的方式处理 PRODUCTION 数据库更改。因此,在 Visual Studio 2012 中有“SQL Schema Compare”工具,我只是想知道它是否不足以管理数据库中的所有更改以进行 PRODUCTION 开发?我可以将我的 {local} 数据库架构与 PRODUCTION 架构进行比较,然后简单地应用所有更改吗?
现在,我想问一下 Code First 迁移的意义何在?为什么要通过它来管理数据库中的所有变化?我能找到的唯一原因是允许执行各种“插入”和“更新”命令。但是我认为,如果数据库设计正确,则不需要执行这些命令。(这是另一个讨论的主题,所以我不想详细说明)。无论如何,我想问 - Code First 迁移相对于 Code First + Schema Compare 模式的真正优势是什么?