从数据库加载配置设置

时间:2014-05-20 20:12:41

标签: c# entity-framework

我目前正在用C#编写MVVMC应用程序(利用实体框架)。

加载和存储配置值的正确(最佳实践)方法是什么?

首先,存在如何存储配置设置的问题...将表格设计为这样的最佳方式:tblConfig(configid,configref,configval)或类似这样:tblConfig(configid,option1 ,option2,option3) - 用有意义的名称(例如logoimage)替换option1等

接下来,有如何在应用程序中检索/存储设置;我的想法是将配置存储在数据库的表中,然后创建一个静态类 - 如下所示:

public static class ConfigClass
{

    public static ConfigClass()
    {
        //load values from database
        ContextClass SiteContext = new ContextClass();

        logoImage = SiteContext.ConfigSettings.ToList().Find(c => c.configreference == "logoimage").configvalue;
        admintoauthoriseaccounts = Convert.ToBoolean(SiteContext.ConfigSettings.ToList().Find(c => c.configreference == "logoimage").configvalue);
        defaultaccountrole = Convert.ToInt32(SiteContext.ConfigSettings.ToList().Find(c => c.configreference == "logoimage").configvalue);

    }

    public static string logoImage = "";
    public static bool admintoauthoriseaccounts = true;
    public static Int32 defaultaccountrole = 1;

}

ConfigSetting DbSet存储库的类:

public class ConfigSetting
{
    public string configreference { get; set; }
    public string configvalue { get; set; }
}

这是个好主意吗?或者我应该忘记静态类,只是直接从DbSet存储库中读取设置?

感谢。

1 个答案:

答案 0 :(得分:3)

最常见的做法是在项目的app.config(或web.config)中存储配置 - 包括连接到该数据库的字符串。您存储在数据库中的任何设置只会添加值,我想,允许用户修改。

如果那是你的目标:

  1. 在db
  2. 中存储用户自定义设置
  3. 将应用程序配置存储在app.config / web.config
  4. 否则:

    1. 将两者都存储在app.config中。
    2. 通过类,静态类,单例模式服务于其他层,你有什么。
    3. 无论选择如何:

      1. 如果您不使用静态类一次又一次地对数据库进行设置,那么最好。这将导致性能下降。
      2. 像logoimage这样的品牌宣传并不像经常或每个用户需要改变的东西,并且不值得存储在数据库中。