2

データベースをどのように構造化しますか?エンティティ・フレームワークとコード・ファーストでリポジトリ・パターンを使用してモデルをコーディングします。Webサイトのシステム設定と構成をデータベースに格納していますか?

たとえば、管理者に、すべてのユーザー名に追加する文字列を設定する必要があります。

私は、次の列を持つキー値テーブル(設定)について考えていましたか? SettingsId,Name,Value。この方法では、手動で入力してレコード名を作成する必要があります。名前:AppendedToUsername、値:nil。次に、必要な設定ごとにリポジトリメソッドを作成します。たとえば。

public string GetAppenedToUsername() 
{ 
    db.Settings.FirstOrDefault(s => s.Name == "AppendedToUsername").Select(s => s.Value); 
} 

このデータベースを設計する方法はありますか?

答えて

1

これは良い解決策です。これらの設定で厳密に型指定されたクラスを作成し、キャッシュを使用することをお勧めします。

キャッシュサービス:

public class CacheService 
    { 
     private ObjectCache Cache 
     { 
      get { return MemoryCache.Default; } 
     } 

     public object Get(string key) 
     { 
      return Cache[key]; 
     } 

     public void Set(string key, object data, int cacheTime) 
     { 
      CacheItemPolicy policy = new CacheItemPolicy(); 
      policy.AbsoluteExpiration = DateTime.Now.AddMinutes(cacheTime); 

      Cache.Add(new CacheItem(key, data), policy); 
     } 

     public bool IsSet(string key) 
     { 
      return (Cache[key] != null); 
     } 

     public void Invalidate(string key) 
     { 
      Cache.Remove(key); 
     } 
    } 

のAppSetting:

public class AppSetting 
{ 
    public const string StrSettingKey = "StrSetting"; 

    private CacheService CacheService { get; set; } 
    private DbContext DbContext { get; set; } 

    public AppSetting(ICacheService cache, DbContext db) 
    { 
     CacheService = CacheService; 
     DbContext = db; 
    } 

    public string StrSetting 
    { 
     get 
     { 
      if (CacheService.IsSet(StrSettingKey)) 
      { 
       return (string) CacheService.Get(StrSettingKey); 
      } 
      else 
      { 
       var value = DbContext.Settings.Single(s => s.Name == StrSettingKey).Select(s => s.Value); 
       CacheService.Set(StrSettingKey, value, 60); //one hour 
       return value; 
      } 

     } 
     set 
     { 

      var item = DbContext.Settings.Single(s => s.Name == StrSettingKey); 
      item.Value = value; 
      DbContext.SaveChanges(); 
      CacheService.Set(StrSettingKey, value); 

     } 
    } 

} 
+0

あなたは、クラスを構造化する方法のいくつかのサンプルコードを与えることができますか? –

関連する問題