【问题标题】:Forcing Entity Framework and ASP.MVC to use the connection string from app.config of another assembly强制实体框架和 ASP.MVC 使用来自另一个程序集的 app.config 的连接字符串
【发布时间】:2015-02-05 09:46:01
【问题描述】:

设置和设置:

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

问题:

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

【问题讨论】:

    标签: c# asp.net-mvc entity-framework asp.net-mvc-4 entity-framework-5


    【解决方案1】:

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

    Web.Config 用于 IIS(并且能够设置 IIS 环境特定的配置)

    似乎永远不会将 App.Config 合并到 Web.Config (source):

    在使用 App.config 时,配置系统将文件合并 App.config 文件中包含 Machine.config 文件的内容,当 应用程序启动并应用配置。这种机制 允许在 Machine.config 文件中定义机器范围的设置。 App.config 文件可用于覆盖 Machine.config 文件;您还可以锁定设置 Machine.config 文件,以便他们使用。 在 Web.config 案例中, 配置系统合并所有目录下的Web.config文件 将应用程序目录引导到配置中 被应用。有关配置和设置的更多信息 优先级,请参阅 System.Configuration 命名空间中的主题。

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

    【讨论】:

    • 感谢您的建议。我已在数据库项目中将 App.config 重命名为 Web.config,但我仍然无法读取它。它没有被合并。 ConfigurationManager,即使在 db 项目的类中执行,也只从 ASP.MVC Web 应用程序的 Web.config 中读取键(尽管它正在调用提到的类)。无论如何 - 正如我上面所写,我被另一篇文章中的一些论点说服将连接字符串存储在启动项目的 web.config 中。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-03-08
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多