【问题标题】:c# Initialize Appsettings from databasec#从数据库初始化Appsettings
【发布时间】:2013-06-08 20:04:17
【问题描述】:

我们有一个现有的控制台应用程序,它当前使用基于文件的 AppSettings。

所以我的 app.config 指向我的实际 appsettings 文件:

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

在整个代码中,我们访问的是这样的配置:

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

展望未来,我们希望 appSettings 位于数据库中。因此,如果我们希望保持相同的代码库并仅修改初始化 appsettings 的方式,那将是正确的方法吗?

我们计划做这样的事情来初始化 appSettings :

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

基本上只是创建与当前文件具有相同键名的键,但键和值来自数据库而不是文件。

这样我们的代码库仍然保持不变,所有的 appSettings 现在都是从数据库而不是文件初始化的。

这是一种正确的方法还是存在一些警告/问题,或者是否有另一种更好的方法可以从数据库中读取而无需更改任何地方的代码?

【问题讨论】:

    标签: initialization appsettings


    【解决方案1】:

    由于我没有收到任何答案,所以我最终做了一个 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");
    

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 2021-11-10
      相关资源
      最近更新 更多