【问题标题】:Issue with different Entity Framework connection strings in web.config and app.configweb.config 和 app.config 中存在不同实体框架连接字符串的问题
【发布时间】:2012-08-13 23:26:18
【问题描述】:

我的解决方案有两个项目。一个类库,用于通过存储库类从 Entity Framework .edmx 文件生成数据。 App.Config 文件 connectionString 与我的第二个 ASP.Net 4.0 Web 表单项目中的 Web.config 匹配。

在部署到测试服务器时,我修改了 BOTH connectionStrings 以指向测试数据库 (DataSource=TestDB)。当部署到实时站点时,我将两者都修改为指向实时数据库 (DataSource=LiveDB)。

在 Site.Master 的顶部,我在标签控件中以红色字母显示“您已连接到 TEST 数据库”。我有条件地切换标签 if (context.Connection.DataSource.Contains("TestDB")) 的 .Visible 属性

在开发过程中,我发现了一些奇怪的东西。当 Web.config 指向 TestDB 时,如果我忘记让 App.config 匹配(并且它指向 LiveDB),则会出现“已连接到 TEST”警告,但会显示来自 LiveDB 的数据。

这告诉我存储库(类库)使用 App.Config,但在 Web 表单项目中创建的数据上下文使用 Web.config 连接字符串。那是对的吗?我担心如果我部署到测试站点并忘记将 App.Config 指向 TestDB,实时数据会被错误地更新。

所以我的问题是,在这种情况下... 显示始终准确的“已连接到测试数据库”通知的最佳方式是什么?

【问题讨论】:

    标签: asp.net entity-framework configuration connection-string


    【解决方案1】:

    默认情况下,类库不会使用任何app.config 文件。

    它将使用在使用它的应用程序上下文中的 .config 文件 - 在 Web 应用程序的情况下是 web.config 文件。

    【讨论】:

    • 但在我的情况下,这似乎不是真的。为什么Web.config指向test,App.Config指向live时显示live数据?
    • @DeveloperDan - 你确定你没有直接加载配置,使用ConfigurationManager 上的Open*Configuration 方法之一?
    • 我没有使用 ConfigurationManager。类库 .edmx 是使用向导和数据库中的更新模型构建的。在我的网络表单应用程序中,我这样做: MyDataProject.MyEnities context = new MyDataProject.MyEnities() 然后在问题中使用 if 语句。
    • 当我在 App.Config 中更改连接字符串时,更改会反映在 .edmx 属性 (ConceptualEntityModel) 以及返回的数据中。这是我唯一设置连接字符串的地方,而不是我相信创建初始 App.Config 连接字符串的初始 EF 向导。
    • @ppumkin - 生成的类中内置了默认值。这可能就是 EF 的问题所在。
    【解决方案2】:

    当应用运行时,它使用 web.config 中的那个,无论上下文是在哪里创建的。

    为什么不在您的实时应用程序上设置防火墙,以防止来自 (a) 实时网络服务器以外的任何地方的访问,或 (b) 特别是您的测试位置?

    【讨论】:

    • 但在我的情况下,这似乎不是真的。为什么Web.config指向test,App.Config指向live时显示live数据?我将研究设置防火墙。
    • 类库 .edmx 是使用向导构建的,并从数据库更新模型,因此这是标准的。在我的网络表单应用程序中,我这样做: MyDataProject.MyEnities context = new MyDataProject.MyEnities() 然后在问题中使用 if 语句。这对我来说似乎并不深奥。
    • Nope.... 很多时候 app.config 或 conenction 字符串被烘焙到该死的 DLL 中,我不知道为什么或如何,但 webconfig 使用 conn 字符串 A 但数据来自 Z跨度>
    猜你喜欢
    • 2012-06-02
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多