我想保存我的应用程序设置,例如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。
答案 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