データベース操作にEF 6.0を使用するWeb APIプロジェクトがあります。私は3つのAzure SQLデータベース(Dev、Test、Prod)を持っています。接続文字列変換を使用してEntity Framework 6.0を使用して複数のデータベースをサポート
データの最初のアプローチでエンティティデータモデルを作成することができました。
VS2017の設定マネージャを使用してweb.test設定ファイルを作成しましたが、接続文字列の変換が機能していません。
現在、私のweb.config
ファイルは次のようにDevの環境を指す接続文字列を持っています
<connectionStrings>
<add name="ProjectDbEntity"
connectionString="metadata=res://*/Data.ProjectEntityModel.csdl|res://*/Data.ProjectEntityModel.ssdl|res://*/Data.ProjectEntityModel.msl;provider=System.Data.SqlClient;provider connection string="data source=company-ai-Projectserver.database.windows.net;initial catalog=company.DB_Dev;persist security info=True;user id=Project;password=Password1234$$;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
そして、web.test.config
次のとおりです。
<connectionStrings>
<add name="ProjectDbEntity"
connectionString="metadata=res://*/Data.ProjectEntityModel.csdl|res://*/Data.ProjectEntityModel.ssdl|res://*/Data.ProjectEntityModel.msl;provider=System.Data.SqlClient;provider connection string="data source=company-ai-Projectserver.database.windows.net;initial catalog=company.DB_Test;persist security info=True;user id=Project;password=Project1234$$;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient"
xdt:Transform="SetAttributes"
xdt:Locator="Match(name)"/>
</connectionStrings>
私はどのように把握することはできませんよデータベースの1つのインスタンスを使用してEFモデルを構築するときにEF変更接続文字列を作成しますが、デプロイメント中に同じスキーマで他のデータベースインスタンスを使用したいとします。
私は以下のpostを読んできましたが、どうにかしてそれを動作させることができませんでした。
EDIT:解決策が見つかりました。私がしなければならなかったのは、[公開]オプションを選択して[設定]を選択し、ポップアップで[設定]を再度選択し、最後にドロップダウンオプションから目的の設定を選択するだけです。メインメニューの設定を選択すると、明示的に選択されない限り同じ環境が公開されないようです。
「展開中に他のデータベースを使用したい」 CI/CDパイプラインの使用を検討すべきだと思います。また、デプロイメントプロセスは設定値を処理する必要があります。環境変数に基づいてすべての設定(接続文字列など)を変更します。 – Major