14

我想知道人们是否可以在源代码控制中的一个项目中发布针对本地数据库和许多开发人员之间的不同连接字符串的持续问题的解决方案?

更具体地说,我说的是一个项目处于源代码控制中并且有许多开发人员每个都有一个本地数据库的问题。每个开发人员都有自己的连接字符串(命名实例、默认实例、机器名、用户名、密码等)。每次签入都会覆盖以前的版本,并且拉取最新版本会导致使用其他人的连接字符串。

那么,人们,您使用哪种解决方案来解决这个问题?额外加分解释为什么他们的解决方案有效,优点和缺点。

编辑 请记住,此答案不应仅针对您可以完全控制设置的企业环境。正确的解决方案应该适用于所有人:企业、初创公司和开源开发人员。

谢谢!

4

4 回答 4

10

对我来说,您的问题似乎暗示了两种结果之一:

  1. 在 Web.config 文件中指定了一个连接字符串,该字符串足够通用以适用于数据库的所有本地版本。您已经指出,在您无法完全控制的环境中,这不是一个理想的设置。
  2. 每个开发人员都需要提供他或她自己的连接字符串,这些连接字符串从未被检入源代码控制。

其他一些人已经涵盖了第一种情况。使用 localhost 并遵循数据库名称的约定。对于选项 2,我建议指定一个不检查到源代码控制的配置源:

<configuration>
  <connectionStrings configSource="connectionStrings.config"/>
</configuration>

编辑:

连接字符串.config

<connectionStrings>
  <add name="Name" 
    providerName="System.Data.ProviderName" 
    connectionString="Valid Connection String;" />
</connectionStrings>

来自: http: //msdn.microsoft.com/en-us/library/ms254494 (v=vs.80).aspx

connectionStrings.config 将是您明确从源代码管理中排除的项目根目录中的文件。每个开发人员在本地工作时都需要提供此文件。您的生产连接字符串可以通过构建/部署时的 Web.config 转换来替换。

于 2012-05-09T22:03:30.763 回答
5

我们所有的开发站的设置都有些相同。

  1. 我们对数据库使用集成身份验证,因此不需要存储用户/密码。
  2. 每个人都使用默认实例。
  3. 由于它们都是本地数据库,因此您可以使用 localhost。
  4. 相同的数据库名称

所以一个连接字符串可能最终是:

Data Source=localhost;Initial Catalog=TheDatabaseName;Integrated Security=SSPI;

每个人都使用它。

于 2012-05-09T21:38:44.987 回答
1

我们有一个在它自己的服务器上运行的测试数据库。它只是每晚从实时服务器实际复制的测试数据。所有开发人员都使用它进行测试。这是真实的数据,但不重要,因为它是一天前的。当然,我们将连接字符串存储在 web.config 中。我有一个从 web.config 获取连接字符串的函数,我只是看看它是否是 localhost 返回测试连接字符串。如果不是,则返回实时连接字符串。这对我们有用。而且我们只是不使用本地数据库。

于 2012-05-09T21:44:16.170 回答
0

我见过各种使用的方法。

i)您只维护一个实时连接字符串,开发人员对相关模块进行修改并且从不签入。

ii) app.config 与连接字符串一起维护,就源代码控制而言,它是一个共享文件。

iii) 在调试配置中,连接字符串详细信息从 IDE 在命令行中传递。

于 2012-05-09T21:42:14.240 回答