2014-09-21 50 views
0

我有我的web.config文件:EF迁移没有使用Web配置连接字符串

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=.\SRV;Initial Catalog=SomeCatalog;Integrated Security=true;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

我有我web.debug.config

<connectionStrings> 
     <add name="DefaultConnection" connectionString="Data Source=.\SRV;Initial Catalog=SomeCatalog;Integrated Security=true;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(DefaultConnection)"/> 
    </connectionStrings> 

我有我的web.defaultserver.config

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=.\;Initial Catalog=EverybodyPilates;Integrated Security=true;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" 
     xdt:Transform="SetAttributes" xdt:Locator="Match(DefaultConnection)" /> 
    </connectionStrings> 

当我运行迁移:

> Update-Database -Force -Verbose 

它挂了很长时间,因为它似乎无法找到我的连接字符串。我是否正确地做我的网络配置?

还是我有其他东西不正确?

+0

不应该将您的'xdt:Locator'设置为''Match(name)“'? – 2014-09-21 22:20:42

+0

是的,可能应该是....哎呀 – 2014-09-22 11:48:54

回答

0

有趣的是,它挂起而不是返回错误。默认情况下,它将从启动项目中获取连接信息。你可以手动指定项目:

Update-Database –SourceMigration $InitialDatabase -ProjectName ProjectWithMigrations -StartUpProjectName WebApp 

您也可以迫使你的情况下使用该连接字符串,默认情况下它会寻找一个基于上下文的名称。

public class MyContext : DbContext 
{ 
    static MyContext() 
    { 

    } 

    public MyContext() 
     : base("Name=DefaultConnection") 
    { 

    } 
} 

如果没有,这似乎帮助,你可以尝试右键点击你的Web应用程序,并选择发布,并做一个简单的文件系统在调试构建配置发布和手动检查web.config文件,看它是否改变正确,甚至把它放在wwwroot中,如果有连接字符串问题,你应该得到一个异常。