如何管理数据库优先项目

时间:2018-07-21 11:30:50

标签: database entity-framework db-first

我们正在研究一个使用数据库优先模型的项目。

在项目开始时,我们决定使用中央数据库,所有开发人员都在使用该数据库。

但是在项目中期,开发人员决定使用自己的数据库,他们正在将数据库克隆到其本地服务器上。因此,他们在本地使用和更改,但是将数据库更改迁移到集中式数据库非常困难,我们需要手工完成。

是否有很好的方法来管理对集中式数据库的数据库更改?

1 个答案:

答案 0 :(得分:2)

  

但是将数据库更改迁移到集中式数据库非常困难,我们需要手工完成。

您从未想到这不会扩展吗?我们目前拥有9个环境的4人团队,这是不可能手动完成的。最重要的是,您将犯错误,并且如果这些错误在生产部署期间发生,那将是很严重的错误。

也就是说,这是一个像50年前解决的问题。从历史中学习。这是我们的方法:

  • 数据库更改脚本。
  • 在按sprint编号的文件夹中

在执行该脚本的每个db tracknig中都有一个表SchemaSync和校验和

缺少/更改的脚本是在部署期间执行的,或者是通过powershell cmdlet手动(从zip文件中)执行的。

这是一个标准的解决方案,早于SSDT和迁移的年龄,并且可能比您年龄大。甚至还有开源实现https://github.com/DbUp/DbUp和商业库(其中一个实际上在VISUAL STUDIO中,因此您可以尝试一下)https://www.red-gate.com/products/sql-development/sql-change-automation/

就像唯一的走法。

SSDT:喜欢丢弃字段。您如何处理数据库迁移?可能有多个步骤?不可能。 SSDT更改脚本的想法对数据移动一无所知。如果您进行了较大的重构(我碰巧做了很多),那么您会知道有时不是“创建新字段”,而是一些部分运行复杂代码的步骤。 SSDT完全无法处理它。