ASP MVC 5 EF - 保存应用程序设置 -

时间:2016-08-03 10:33:53

标签: c# asp.net-mvc entity-framework

我想保存我的应用程序设置,例如wordpress将其应用程序设置保存在wp_options表中。

Object& Object::operator+=(const Object& rhs) { // do internal arithmetics to add 'rhs' to this instance return *this; // here we return the reference, but this isn't a local object! } 表模式如下:

wp_options

如果我像这样保存,那么我将无法直接访问option_id option_name option_value autoload ------------------------------------------------- 1 siteurl 'mywebsite.com' yes 2 blogname 'myblog' yes 之类的值。我是否需要制作自定义映射?

我正在使用实体框架btw。

1 个答案:

答案 0 :(得分:2)

这是一个映射示例,只是为了给你一个想法。

public class Option
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Value { get; set; }
    public bool IsAutoload { get; set; }
}

创建字典..

Dictionary<string, Option> WP_Options = new Dictionary<string, Option>();

List<Option> options = context.Wp_Options.Select(r => new Option() 
{ 
    Id = r.option_id, 
    Name = r.option_name, 
    Value = r.option_value, 
    IsAutoload = r.option_autoload == "yes" 
}; // store records into a list

foreach(Option option in options)
{
    WP_Options.Add(option.Name, option); // Store to dictionary
}

您现在可以访问以下选项:

Option siteUrl = WP_Options["siteurl"];
var val = siteUrl.Value;
bool autoload = siteUrl.IsAutoload;

如果您熟悉单例类,那么我建议创建一个公开字典WP_Options的类。有了这个,您可以在整个应用程序中访问相同的WP_Options实例。

您只需要处理保存到数据库的选项。

这是一个小样本:

foreach(KeyValuePair<string, Option> entry in WP_Options)
{
    if(context.Wp_Options.FirstOrDefault(o => o.Name == entry.Value) != null)
    {
        // Entry exists do an update logic
    }
    else
    {
        // Entry does not exist do an insert logic
    }
}

// save data context