基本上你的两点是正确的 - 除非你正在处理中央数据库,否则当别人进行更改时,每个人都必须更新数据库。如果您正在使用中央数据库,则还可以进入数据库更改的问题(即:删除了一列),并且未检入相应的源代码。然后,你都死在水中,直到检入源代码或数据库被回滚。使用中央数据库也意味着开发人员无法控制何时将数据库模式更改推送给他们。
我们已经安装了每个开发人员的计算机上的数据库(尤其是好的,因为我们针对不同的数据块,每个开发者都有支持的数据库给我们真的很好的跨平台测试,因为我们去的一个)。
然后是“发展”环境指向的中央“发展”数据库。它通过持续集成每个签入来构建,并且在成功构建/测试时发布到开发中。需要签入到源控制
变化,开发商使他们的本地计算机上的数据库架构。它们是数据库升级脚本,用于对数据库进行从版本X到版本Y的所需更改。数据库是版本控制的。当客户升级时,这些数据库脚本将在其数据库上运行,以将其从当前版本升级到他们正在安装的所需版本。
这些dbpatch文件存储在以下结构:
./dbpatches
./23
./common
./CONV-2345.dbpatch
./pgsql
./CONV-2323.dbpatch
./oracle
./CONV-2323.dbpatch
./mssql
./CONV-2323.dbpatch
在上述树中,版本23具有被任何数据库上运行一个共同dbpatch(是ANSI SQL),而对于一个特定dbpatch三个数据库需要供应商特定的SQL。
我们有一个数据库更新脚本,开发人员可以运行它运行任何尚未在其开发计算机上运行的dbpatch(不考虑版本 - 因为在单个版本的开发过程中可能会委托多个dbpatches进行源代码管理)。
连接字符串被保持在NHibernate.config,但是如果存在的话,NHibernate.User.config来代替,然而NHibernate.User.config从源控制忽略。每个开发人员都有自己的NHibernate.User.config,它指向他们的本地数据库并设置适当的方言等。
当推到开发中时,我们有一个NAnt脚本,它在配置模板中为我们执行变量替换。这个脚本在升级时以及在发布包时使用。 NAnt脚本使用环境设置文件中的变量值填充模板配置文件。
谢谢,我明白了上面这些Web.Config转换的文章,但它并没有告诉我该把这个文件放在哪里以及如何连接它。 – 2010-11-29 00:39:28
它在你的MVC项目的根目录下自动创建。 – jfar 2010-11-29 00:50:06