2

我是一个小型开发团队的一员,我们目前正在从共享相同开发数据库的模型转变为我们都有自己的个人开发数据库的模型。

因此,我们正试图弄清楚如何管理 Web 和应用程序 .config 文件以适应各个数据库。显然,我们希望避免每个人都需要手动更改连接字符串以指向他们自己的数据库然后记住在重新签入之前将其更改回来的情况!

我确信这是几乎所有开发团队都面临的一个非常普遍的问题。尽管如此,我找不到任何解决这个问题的方法。

我熟悉使用 xdt 语法的 web.config 转换,虽然这有助于修改文件,但它(据我所知)不提供注入外部参数值的方法。例如,我们需要转换来检测当前用户,并将 .config 中的数据库名称替换为包含其用户名的名称。

那么,如何在您的开发团队中解决这个问题呢?

谢谢。

编辑:

抱歉,我错过了一条相当重要的信息,导致这些答案无法被接受。作为一家公司,我们都在我们的开发环境中远程工作和远程桌面。我们实际上拥有一台(强大的)开发机器,所有开发人员 rdp 进入并同时使用。因此,使用别名或修改主机文件等将同样适用于所有用户,而不提供必要的个人定制。SQL 实例已经是一个本地实例,它只是机器上的一个本地实例,供所有开发人员使用。

4

5 回答 5

1

我可以建议两种方法来做到这一点。

  1. 为您的数据库服务器名称使用相同的别名,以便连接字符串相同,您可以通过将以下行放入主机文件中来做到这一点:

    127.0.0.1 数据库服务器

  2. 将您的连接字符串放入外部文件中,不要将其添加到源代码管理中。对于暂存和发布配置,您可以通过 Web 配置转换添加所需的连接字符串。

在第二种情况下,您的 web.config 将如下所示:

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

编辑:其中connectionStrings.config文件放置在同一文件夹中,但添加到源代码管理下的忽略列表中,这样每个开发人员都将拥有自己的该文件副本,并且他的更改不会影响其他开发人员。为了简化事情,您可以创建一个connectionStrings.config.default可用作模板的文件,这样当新开发人员加入项目时,他将connectionStrings.config基于此文件创建自己的副本,并使用默认值。

于 2012-06-13T15:33:03.733 回答
0

尽管我们使用 web.config 转换来定义使用的数据库(本地开发、测试、发布),但如果需要,每个开发人员都可以使用本地 SQL 服务器。我们通过设置 SQL 服务器别名来做到这一点,Web 配置连接字符串是相同的,并且开发人员在他们的机器上设置别名。

例如,我们都在 web.config 中设置了“tester1”,然后开发人员为其本地 SQL 服务器设置了别名,这是图像:

在此处输入图像描述

于 2012-06-13T15:43:10.813 回答
0

这个问题的一个常见解决方案是在每个用户的开发机器上都有开发数据库,​​这样你就可以为每个人拥有相同的连接字符串,例如对于 SQL Server,它将类似于:

connectionString="data source=.\SQLExpress;..." 

执行此操作时,您希望每个开发人员都拥有最新的数据库,因此您应该真正查看 Visual Studio 2010 数据库项目,这非常容易(尽管仅限 SQL Server)。

于 2012-06-13T15:29:43.020 回答
0

我们使用的技术是标准化开发机器上的数据库名称、服务器名称(无命名实例)、用户名和密码。

因此,如果产品代号是 Aero,我们将使用

服务器=(本地);数据库=aero;uid=aero;密码=密码

对于开发环境,安全性并不重要,但一致性很重要,而且这种技术可以避免检查和破坏其他人的 app/web.configs。

于 2012-06-13T15:30:33.063 回答
0

一个选项可以是使用命名的连接字符串,并在 machine.config 而不是 web.config 中定义这些。

于 2012-06-13T15:27:24.763 回答