为啥需要在具有 .dll 作为数据访问层的消费应用程序的 app.config 文件中声明连接字符串

Posted

技术标签:

【中文标题】为啥需要在具有 .dll 作为数据访问层的消费应用程序的 app.config 文件中声明连接字符串【英文标题】:why do you need to declare a connection string in the app.config file of a consuming application that has a .dll as the data access layer为什么需要在具有 .dll 作为数据访问层的消费应用程序的 app.config 文件中声明连接字符串 【发布时间】:2013-04-15 21:19:48 【问题描述】:

我确信这可以追溯到最基本的问题,但我很好奇:

我有一个 dll 来处理与数据库的实体框架连接。即我的模型与静态类一起在这个 dll 中,以帮助管理 CRUD 方法或验证。

我的问题是:一旦我引用了这个 dll,为什么我必须在我的消费应用程序的 app.config 文件中包含 ModelEntites 连接字符串,而这已经在 dll 的 app.config 文件中完成了?

【问题讨论】:

【参考方案1】:

共享库没有单独的 app.config,因为 app.config 是应用程序级别的配置文件。因此,您希望在 app.config 级别为共享库(包括连接字符串)设置的任何设置都需要在当前应用程序的 app.config 中进行。

虽然您的共享库中可能有一个 app.config 文件,但 .NET 框架不会自动使用它。 There are ways to include it if you really need to,但在我看来,它们可能比仅在标准 app.config 中为每个使用该库的应用程序包含相关信息更麻烦。

【讨论】:

我还没有获得足够的声誉,所以不能给出一个观点,但这是一个很好的答案并且很有意义,所以谢谢你和 +1 恕我直言 有什么解决办法吗?如果有人给了我他们相同 dll 的版本,但没有费心给我连接字符串...我将如何使用该 dll? 按照设计,它将使用应用程序中的连接字符串,因为通常您希望针对当前应用程序的资源使用库,而不是某些静态资源。我从未见过连接字符串应该是静态的情况。 哦!!!!好的,我认为它对我来说只是“点击”,是的,现在很有意义......明白了,再次感谢

以上是关于为啥需要在具有 .dll 作为数据访问层的消费应用程序的 app.config 文件中声明连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

具有多个数据库的数据访问层的设计

为啥vs2008 express显示给我另一个dll项目的源代码?

为啥新的 AppDomain 会加载不必要的 DLL?

为啥 Qt 让开发人员在每个应用程序中都包含他们的 dll?

从商业智能到消费智能

ASP.NET 一个数据访问层的封装