因为我正在处理一个新的数据库项目(在 VS2008 中),而且我从未从头开发过数据库,所以我立即开始研究如何在源代码控制(在本例中为 Subversion)中管理数据库。
我找到了一些关于 SO 的信息,包括这篇文章:Keeping development databases in multiple environments in sync . One of the answers in particular指向许多链接,所有这些链接都有很好的、有用的信息。
我正在阅读 series of posts由 K. Scott Allen 撰写,其中描述了他如何管理数据库更改。根据我的阅读(并请原谅我的问题的愚蠢),似乎数据库本身从未被 checkin 存储库。相反,可以构建数据库的脚本以及测试数据(也从脚本中填充)被 checkin 存储库。最终,这意味着,当开发人员测试他或她的应用程序时,将运行这些作为构建过程一部分的脚本。这确保数据库是最新的,但也在每个开发人员的机器上本地运行。
这对我来说很有意义(如果我确实没看错的话)。但是,如果我遗漏了什么,我将不胜感激更正或额外指导。此外,我想问的另一个问题 - 这是否也意味着我应该不检查从创建的 mdf 或 ldf 文件 Visual Studio ?
感谢您的帮助和额外的见解。一直很感激。
最佳答案
这是正确的,您应该 checkin 脚本而不是数据库文件本身。
我不喜欢从测试数据构建,除非数据本身会模拟生产数据的大小(或者在新数据库的情况下,打算拥有)。为什么?因为针对包含 100 条记录的表编写代码并不能告诉您当您拥有 10,000,000 条记录时它是否会及时运行。我有太多错误的设计选择来自那些认为小数据集适合开发的人。
在这里,我们不允许开发人员在他们的机器上有一个单独的数据库(这通常会限制数据库的大小,因为它不是附加到 SAN 的服务器),相反,他们必须针对开发数据库工作,该数据库是定期从产品中刷新(然后运行所有新的开发脚本)以保持数据的正确大小。我认为您的开发数据库环境尽可能与产品匹配很重要,包括设备配置、数据库大小等。没有什么比花很长时间开发一些根本无法在生产上工作或必须在生产上工作更令人沮丧的了立即关闭,因为它使系统速度减慢太多。
现在从我的肥皂盒上跳下来。
关于.net - 在源代码管理中管理我的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2776007/