无法在web.config中为dev,qa和&设置实体框架连接字符串。 PROD

时间:2016-12-30 16:27:37

标签: c# asp.net entity-framework web-config linq-to-entities

我继承了一个旧的vs.net 2010 WCF webservice项目来修复。它在web.config中有以下connectionString设置,以区分dev,qa和&生产与发展在尝试调试时,我无法连接到它们。希望有人可以提供帮助:

  <connectionStrings>    
     <add name="OrderDataContextContainer.Development" connectionString="metadata=res://<conn string here>" providerName="System.Data.EntityClient" />
     <add name="OrderDataContextContainer.QA" connectionString="metadata=res://<conn string here>" providerName="System.Data.EntityClient" />
     <add name="OrderDataContextContainer.Production" connectionString="metadata=res://<conn string here>" providerName="System.Data.EntityClient" /> 
 </connectionStrings>

我添加的代码通过以下“using”语句建立数据库连接:

using (OrderDataContextContainer db = new OrderDataContextContainer())
 {
      //my code fix here
 }

如果我将以下web.config连接添加到connectionStrings列表中,它连接正常(即没有附加“开发”,“QA”或“生产”):

<add name="OrderDataContextContainer" connectionString="metadata=res://<conn string here>" providerName="System.Data.EntityClient" /> 

然而,我不能这样做,因为我的公司需要单独的dev,qa,&amp;当我将此修复程序发送给QA团队进行测试时,我会将这些字符串用于测试。如果我不包含上述连接,则在“using”语句中收到以下错误:

  

在配置中找不到指定的命名连接,不打算与EntityClient提供程序一起使用,或者无效。

在运行项目之前,我创建了“开发”,“QA”和&amp;我的vs.net配置管理器中的“生产”配置&amp;将它设置为“开发”但没有运气。

知道如何通过前面提到的连接字符串来连接我的应用程序吗?

1 个答案:

答案 0 :(得分:3)

那是因为EF总是在.config文件中搜索相同的连接字符串。该名称在EF设计器中定义,通常与上下文类具有相同的名称。

您可以做的是使用web.config转换,了解如何在项目中执行此操作:How to: Transform Web.config When Deploying a Web Application Project