コードをプッシュするときにAzureとスロット変数を使用してステージングデータベースと本番データベースを切り替えます。 2つのデータベースは常に同じです。Entity Framework 6で環境変数を使用してステージング/本番データベースを切り替える
これは、2つの方法を切り替える方法を簡略化した設定です。
のWeb.config
<connectionStrings>
<add name=“StagingDatabase” connectionString=“YYY” />
<add name="ProductionDatabase” connectionString=“XXX” />
</connectionStrings>
Constants.cs
public static DbContext getDatabase()
{
if (@Environment.GetEnvironmentVariable("isDatabaseStaging"))
{
return new StagingDatabase();
}
else
{
return new ProductionDatabase();
}
}
問題は、私はDbContextを返していますので、Entity Frameworkのは、データベースのテーブルのいずれかを知らない、Code.csでありますdbContextにTableの定義がないとコンパイルしません。
Code.cs
public class useDatabases
{
public static useDatabasesResponse useDatabasesImplementation(useDatabasesRequest request)
{
using (var db = Constants.getDatabase())
{
var table = db.Table.SingleOrDefault(a => a.id == request.id);
if (table == null)
{
return new useDatabasesResponse
{
message = “Table not found!“,
status = 200,
};
}
// do more database stuff, etc..
}
}
}
私も、私は彼らが同じものを使用して取得できた場合、多分それが正常に動作します、両方の私のデータベースが別々の.edmxファイルを持っていることに注意する必要がありますか?
production web.config変換を行います。 https://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx – Dreamweaver
私は環境変数で、実行時に使用したいデータベースに変更することができるようにする方法はありませんか?私はその機能が非常に便利だとわかります – James
はい、確かに...リンクhelpulですか? – Dreamweaver