强制 Entity Framework 和 ASP.MVC 使用来自另一个程序集 app.config 的连接字符串

Forcing Entity Framework and ASP.MVC to use the connection string from app.config of another assembly

设置与设置:

我使用 Entity Framework 5 并且有一个带有 edmx 文件的 dll 项目。在这个项目中,我有 App.config 和 EF 模型的连接字符串。我还有第二个项目,ASP.MVC 4 Web 应用程序,这是一个启动项目。它引用数据库项目。重要的是 - 数据库是 Oracle 并且 EF 使用 Oracle 自定义提供程序。

问题:

如果我将我的连接字符串放在 ASP.MVC 启动项目中就可以正常工作。这样做是常见的建议。但我不想。我不明白为什么我应该这样做。如何强制 MVC/EF 在外部库(实际上是数据访问层)的 App.config 中找到连接字符串?

App.Config 由 WinForms、WPF 和可执行应用程序使用。

Web.Config 在 IIS 中使用(并且能够设置 IIS 环境特定配置)

似乎没有 App.Config 会合并到 Web.Config (source):

In using an App.config, file the configuration system merges the App.config file with content of the Machine.config file when the application starts and the configuration is applied. This mechanism allows machine-wide settings to be defined in the Machine.config file. The App.config file can be used to override the settings of the Machine.config file; you can also lock in the settings in Machine.config file so that they get used. In the Web.config case, the configuration system merges the Web.config files in all directories leading up to the application directory into the configuration that gets applied. For more information about configuration and the setting priorities, see topics in the System.Configuration namespace.

也许您会通过使用 Application Configuration Files 找到更适合您需求的解决方案。

最后,在面对多个问题后,我决定将 DAL 的连接字符串移动到 Web 应用程序的 Web.config 中。我被一些论点说服了,你可以在 Chris Ammerman 的 post 中阅读 here