1

私は、本番環境とテスト環境を動的に切り替える方法を探しています。ASP.NETコアEFコードまずはappsettings.json

MSSQLデータベースには2つの異なる接続文字列があります。私は動的に私のdbContextにこれを渡したい:

services.AddDbContext<ViggrContext>(options => 
        options.UseSqlServer(Configuration.GetConnectionString("TestDatabase"))); 

私は公開プロフィール、テストおよび本番環境のための別のものの2種類があります。 このプロファイルでは、データベースへの接続を選択します。もちろん、TestプロファイルはTestDatabase接続文字列を指しており、Productionプロファイルは本番データベースを指しています。 enter image description here

しかし、どのようにコードのこのセクションでStartup.csクラスを動的に読み込むことができますか?

services.AddDbContext<ViggrContext>(options => 
        options.UseSqlServer(Configuration.GetConnectionString("TestDatabase"))); 

ご意見はありますか?

答えて

3

あなたがのAppSettingsを使用して、テスト環境についてthis-

のようなさまざまのAppSettingsファイル内の異なる環境の接続文字列を設定することができます。 prod環境のためにテスト .json

"Data": { 
    "ViggrContext": { 
     "ConnectionString": "" /*<<== TestDatabase connection string */ 
    }, 

、のAppSettingsを使用しています。 PROD .json

"Data": { 
    "ViggrContext": { 
     "ConnectionString": "" /*<<== ProdDatabase connection string */ 
    }, 

使用ASPNETCORE_ENVIRONMENT環境変数はテスト又はのProd値として現在の環境を設定します。

スタートアップでは、このことができますかどうかを確認しthis-

 services.AddDbContext<ViggrContext>(options => 
options.UseSqlServer(Configuration["Data:ViggrContext:ConnectionString"])); 

のように使用することができます。

関連する問題