0

我创建了一个类库,其中包含其他类必须连接到的三个数据库的三个实体模型。然后这个类库被三个不同的 Web 服务和一个网站使用。这些都安装在他们自己的服务器上,因此没有简单的方法让他们共享相同的连接数据。

在我的 web.config 文件中,我有这一行:

<connectionStrings configSource="Dependencies.ConnectionStrings.Config"/>

这将从单独的 XML 文件加载连接字符串。它工作正常,但这也意味着我现在有这个 Dependencies.ConnectionStrings.Config 文件的 5 个不同副本。我宁愿在开发过程中使用单个文件。

但是,我的解决方案还包含四个设置项目,在这些设置中,配置文件必须彼此相邻。

那么如何告诉 VS 在多个项目之间共享一个配置文件而不修改 web.config 呢?


为了让它稍微复杂一点,类库使用 app.config 来存储连接字符串。而且我不能告诉 app.config 将连接字符串链接到单独的配置文件,显然......另一个复杂的问题是连接字符串需要在安装后由系统管理员修改。那是因为它必须寻找与开发数据库不同的数据库。(实际上,在开发过程中,我使用了 3 个数据库来拆分实体逻辑。测试和生产环境将只使用一个数据库。)
我目前的解决方案很简单。我已将 Dependencies.ConnectionStrings.Config 文件添加到我的解决方案中的单独文件夹中,并定期将其拖放到其他项目中以更新它们。虽然这可行,但它很容易出错......

4

2 回答 2

1

最大的问题是您不能在当前主配置文件上方的文件夹层次结构中拥有链接的配置文件,这使得共享它们变得困难。

您是否考虑过将其放置在配置层次结构的更高位置——可能在根 web.config或 machine.config 中?

另一种选择是让一些预构建事件构建这些文件,因此您不必担心它们有多个副本。当我需要为每个开发人员创建不同的连接字符串时,我已经非常成功地使用了 prebuild 选项。

于 2009-07-03T07:56:21.103 回答
1

我不知道是否可以在不修改文件的情况下执行您的要求。

我同意如果你有一个可以被所有服务器使用的文件会更好,那么你就不会有版本问题等。

老实说,整个设置听起来很复杂,如果说错误的配置文件最终出现在错误的服务器上,可能容易出错。

我很想将连接信息集中在共享数据库中。您可以记录每个服务器应该使用的连接字符串(根据服务器名称存储)。这样每个服务器都会知道它应该使用哪些连接字符串。这当然假设您的服务器都可以联系一个中央数据库服务器(取决于您的设置)。

当然还有其他方法可以获得所需的结果,但我认为如果你“自己动手”而不是试图改变内置的应用程序设置来做你想做的事,你可以获得一个更优雅的解决方案。

于 2009-07-03T07:56:52.367 回答