我正在构建一个我需要部署到两个环境的网站:stage和prod。
我在web.config中指定了三个连接字符串。
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=MyWebAppWaitWebDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\MyWebAppWaitWeb.mdf" providerName="System.Data.SqlClient" />
<add name="MyWebAppConnection_Stage" connectionString="Server=StageSQL01T;Database=MyWebAppWaitWeb;User Id=foo;Password=bar" providerName="System.Data.SqlClient" />
<add name="MyWebAppConnection_Prod" connectionString="Server=ProdSQL01;Failover Partner=ProdSQL02;Database=prd_SP_ExternalData;User Id=foo;Password=bar" providerName="System.Data.SqlClient" />
在发布Web向导中,我在向导的“设置”部分中显示了所有这三个连接字符串。所以在这种情况下我选择了stage并取消了其他的检查,以便我可以发布到我的舞台服务器。
发布后,我发现它添加了一个名为“MyWebAppConnection_Stage_DatabasePublish”的新连接
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=MyWebAppWaitWebDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\MyWebAppWaitWeb.mdf" providerName="System.Data.MyWebApp" />
<add name="MyWebAppConnection_Stage" connectionString="Data Source=StageSQL01T;Initial Catalog=MyWebAppWaitWeb;User ID=foo;Password=bar" providerName="System.Data.MyWebApp" />
<add name="MyWebAppConnection_Prod" connectionString="Server=ProdSQL01;Failover Partner=ProdSQL02;Database=prd_SP_ExternalData;User Id=MyWebAppWebApp;Password=bar" providerName="System.Data.MyWebApp" />
<add name="MyWebAppConnection_Stage_DatabasePublish" connectionString="Data Source=StageSQL01T;Initial Catalog=MyWebAppWaitWeb;User ID=foo;Password=bar" providerName="System.Data.MyWebApp" />
为什么要生成第4个连接字符串?此外,这个VS 2010 Publishing如何与我的Entity Code-first类的DbContext类兼容,它指定了连接字符串?
public class MyContextDb : DbContext
{
public MyContextDb(): base("DefaultConnection")
{
Debug.Write(Database.Connection.ConnectionString);
}
...
我认为我会想要使用传统的web.config转换,它只是根据正在使用的转换文件改变一个连接字符串。