2016-08-03 12 views
0

wordpressのようなアプリケーション設定を保存したい場合、その設定をwp_optionsテーブルに保存します。ASP MVC 5 EF - アプリケーション設定の保存 -

wp_optionsテーブルスキーマは次のとおりです。

option_id option_name option_value  autoload 
------------------------------------------------- 
1   siteurl  'mywebsite.com' yes 

2   blogname 'myblog'   yes 

私はこのように保存する場合は、私が直接object['siteurl']のような値にアクセスできるように文句を言いません。カスタムマッピングを作成する必要はありますか?

私はEntity Framework btwを使用しています。

+1

はい、カスタムマッピングを行うためにしたことについて。 –

答えて

1

ここでは、アイデアを提供するためのマッピングサンプルを示します。あなたは、私が公開するものを作成をお勧めしたいシングルトンクラスに精通している場合

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

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 
} 

あなたは今のようなあなたのオプションにアクセスすることができます辞書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 
+0

シングルトンクラスは、システム全体のキャッシュとして役立ちます。 – Waleed

関連する問題