我有一个ASP.NET项目。自然,通过不同的版本和开发分支,数据库模式会发生变化。在ASP.NET中处理版本分支/回滚之间的数据库更改
有什么方法以友好的方式干净地处理模式更改,以便我可以轻松地在开发分支之间切换?
我使用SQL Server 2005,但一般技术可能工作。
我有一个ASP.NET项目。自然,通过不同的版本和开发分支,数据库模式会发生变化。在ASP.NET中处理版本分支/回滚之间的数据库更改
有什么方法以友好的方式干净地处理模式更改,以便我可以轻松地在开发分支之间切换?
我使用SQL Server 2005,但一般技术可能工作。
跟踪一个开发项目的多个分支的模式变化的一个好方法是遵循database refactoring过程。除了其他好处外,这种过程还包括使用增量和迁移脚本将架构更改应用于每个环境(或您的案例中的分支)。该设置可以是这个样子:
main
src <-- ASP.NET project source
db <-- Database create scripts
delta <-- Database change scripts (SQL delta files)
branch
src
db <-- usually has the same contents as the copy in main branch
delta <-- only the changes necessary for this branch
每当你需要改变数据库模式为你创建一个用于应用变化的SQL脚本三角洲特定分支的时间。为了方便起见,我建议命名每个脚本文件以包含创建日期和时间以保持顺序。示例如下:
201102231435_addcolumn.sql
201102231447_addconstraint.sql
201103010845_anotherchange.sql
将delta文件添加到需要进行模式更改的分支中的源代码管理。您应该最终确定每个分支包含更改相应数据库所需的内容。有些细节可能需要根据您的情况进行调整,具体取决于您的分支方案以及您的数据库在发布过程中是否保留(而不是重新创建)。
最后,为了尝试使这些概念变得简单,我会推荐一个工具来帮助管理流程。我的建议是看看DBDeploy/DBDeploy.NET。我在我的所有项目上都很开心地使用它多年。
我们将源代码管理中的架构更改放置在该版本的其余代码部署的相同位置。
@我很困惑,你的意思是你偶尔会改变你的数据库模式,并且不想知道处理更新访问数据库的代码的最佳方式吗? – 2011-02-24 19:15:25
不是访问数据库的代码。模式自身发生变化。 – 2011-02-24 19:48:32
我只是想知道为什么没有人像rails迁移一样获得这个权利?我知道亚音速3刺伤它,但(见AutoMigrations)它不是完美的......为什么我们没有.net/c#等这个? – jonezy 2011-02-24 20:28:15