2

現在、ファイル ベースの AppSettings を使用する既存のコンソール アプリケーションがあります。

したがって、私の app.config は実際の appsettings ファイルを指しています:

<appSettings configSource="Configs\StaticAppSettings.config"/>

そして、コード全体で、次のように構成にアクセスしています。

var value = ConfigurationManager.AppSettings["SomeKeyName"];

今後は、appSettings を Database に含める必要があります。同じコードベースを維持し、appsettings の初期化方法を変更するだけの場合、それは正しいアプローチでしょうか?

appSettings の初期化として、次のようなことを計画しています。

ConfigurationManager.AppSettings["SomeKeyName"] = "SomeValue";
ConfigurationManager.AppSettings["SomeKeyName2"] = "SomeValue2";

基本的に、現在ファイルと同じキー名でキーを作成するだけですが、キーと値はファイルではなく DB から取得されます。

このようにして、コードベースは同じままで、すべての appSettings がファイルではなく DB から初期化されるようになりました。

これは正しいアプローチですか、それともいくつかの警告/問題がありますか、またはどこでもコードを変更せずに DB から読み取るための別のより良いアプローチはありますか?

4

1 に答える 1

4

回答が得られなかったので、私の主張を証明するために POC を実行することになりました。以下は、appsettings を通過し、DB から設定を更新するコードの一部です。

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

IDictionary<string, string> staticAppSettings = ConfigService.GetStaticAppSettings(); // DB Call to get all settings from DB

foreach (var setting in staticAppSettings)
{
  if (ConfigurationManager.AppSettings[setting.Key] == null)
    config.AppSettings.Settings.Add(setting.Key, setting.Value);
  else
    ConfigurationManager.AppSettings[setting.Key] = setting.Value; // Update existing
}

config.Save();
ConfigurationManager.RefreshSection("appSettings");
于 2013-06-19T18:22:35.327 に答える