2012-03-31 59 views
0

我的团队正在进行网络开发(ASP.NET,WCF),我们正处于开始阶段,每个人都需要更改数据库并使用自己的示例数据。如何分离ASP.NET中的配置?

我们使用专用的数据库服务器,我们希望每个开发人员针对单独的数据库进行开发。

我们似乎需要的是能够以源代码控制的方式在每个开发人员的基础上配置连接字符串。显然,我们可能有其他需要自定义设置的配置设置,最后,我们需要维护一组所有开发人员都通用的配置设置。

任何人都可以在这里提出一个最佳实践吗?

PS当我们想要将构建的应用程序部署到不同的环境(测试,舞台,制作)而不必手动调整配置(可能配置环境名称除外)时,会出现类似问题。

回答

2

您可以将配置转换用于您的部署到不同的环境。这很简单。斯科特Hanselman做了一个非常棒的视频here

对于您的个人开发人员数据库问题,没有任何可以想到的特别优雅的解决方案。让每个开发人员拥有独特的配置并不是真正的“最佳实践”。一旦每个人都开始集成他们的代码,如果每个人都针对一个独特的数据库和配置集编写他们的代码,那么您可能会遇到非常难看的情况。它几乎可以保证代码对于两个开发人员不会执行相同的方式。

这是我会推荐的,并在过去完成的。

  1. 在您的测试数据库服务器上的一个数据库上为您的数据库创建基本框架。
  2. 创建数据库项目作为解决方案的一部分。
  3. 使用.Net的内建Schema Compare将现有数据库写入数据库项目。
  4. 当有人需要更改数据库时,首先他们应该掌握最新的数据库项目,然后进行更改,然后重复步骤4将其更改添加到项目中。
  5. 使用此方法,开发人员也很容易部署与“主”数据库匹配的数据库本地实例,进行更改并将这些更改写回项目。
+0

我们已经有了一个类似于您的DB开发的过程,并且我同意'独特配置'肯定会导致不同的行为。我们只是想为专用的SQL Server计算机上的每个开发人员提供单独的数据库,这需要单独的连接字符串。 我想随着时间的推移,我们可能会发现更多这样的设置,以保持“独特”的意义。 为了统一的web.config,被迫使用'localhost'(即必须运行本地SQL服务器)令人沮丧。 – tishma 2012-04-03 13:48:49

+0

感谢您的建议。部署的快速启动绝对有用,它甚至可以在每个环境中动态生成Web.Config,但作为一种非标准方式,我不会这么做。 Schema Compare在某些假设下似乎也能正常工作。有时它似乎窒息(为了不破坏数据)在一个所谓的小桌面转换。 – tishma 2012-04-12 07:00:58

0

OK。

也许不是那么优雅的解决方案,但是我们选择了使用调试配置构建项目时从不同位置读取连接字符串。

我们使用注册表,它必须手动维护。

它需要一些额外的编码,但读取注册表的代码仅在debug(#if debug)中编译,因此在生产中没有性能影响。

希望这也有帮助。

干杯

v。