DAL 中的 app.config 和 Web 应用程序中的 web.config

Posted

技术标签:

【中文标题】DAL 中的 app.config 和 Web 应用程序中的 web.config【英文标题】:app.config in DAL and web.config in WebApplication 【发布时间】:2012-11-01 00:53:21 【问题描述】:

我正在使用 Entity Framework 和 ASP.NET MVC 编写应用程序,因此我决定将 DAL 与 MVC Web 应用程序分开。实际上一切都很好,除了下一个问题(如果有问题):我必须将实体连接字符串从 DAL 项目的 app.config 复制到 Web 应用程序的 Web.config。实际上它看起来是正确的:DAL 不应该知道与数据的连接字符串,这是主应用程序的职责。

但我真的不喜欢,我必须在 DAL 的 app.config 中保留实体连接字符串,因为它需要更新我的 EntityModel (*.edmx)。是否有一些最佳实践可以参考 Web 应用程序的连接字符串?还是我应该保持现在的样子?

【问题讨论】:

在使用类似EF的情况下,EF不是你的DAL吗?您是将此 DAL 包装在 DAL 中还是您自己的? 是的,对,我将 EF 包装在我的 DAL 项目中 【参考方案1】:

所以,只是对这里发生的事情的解释。在开发应用程序时,DAL 项目本质上是它自己的项目。编辑 DAL 项目时,Visual Studio 将使用项目配置文件中的值。因此,为什么连接字符串保留在那个 app.config 文件中。

现在,当您将整个解决方案发布到 Web 服务器时,Web 应用程序就是正在运行的实际应用程序。这引用了在构建过程中编译的 DAL dll。鉴于此,DAL dll 将从 web.config 获取其所有配置值,因为这是主要执行程序集的配置文件。

要回答您的问题,最好将它们同时保存在 app.config 和 web.config 中,因为您不必在每次需要更新模型时都“创建新连接”。据我所知,DAL 项目在 Visual Studio 中永远不会查看另一个项目配置文件。但是,在 app.config 和 web.conig 中都有连接字符串不会影响您的部署。将始终使用 web.config 设置。

【讨论】:

汤米,感谢您的详细回答。现在我很清楚,这没什么好担心的

以上是关于DAL 中的 app.config 和 Web 应用程序中的 web.config的主要内容,如果未能解决你的问题,请参考以下文章

WCF开发中的Web.config和App.config

git 中的 web.config 和 app.config 机器特定设置

DAL 和 BLL 应通过的类型

web.config与.dll中的app.config

app.config/web.config 中的变量

使用链接文件的 App 或 Web Config 中的 AppSettings