ステージと本番の 2 つの環境にデプロイする必要がある Web サイトを構築しています。
web.config で 3 つの接続文字列が指定されています。
<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 発行ウィザードでは、ウィザードの「設定」部分にこれら 3 つの接続文字列がすべて表示されます。この場合、stage サーバーに公開できるように、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);
}
...
使用されている変換ファイルに応じて 1 つの接続文字列を単純に変更する従来の web.config 変換を使用したいと思います。