2

発生している現在のイベントを表すオブジェクトがあります。このイベントには多くの設定が含まれています。すべての設定変数をイベント オブジェクト内に格納するためのベスト プラクティスは何ですか?

設定はデータベースに保存されます (現在、基本クラスに基づいて異なる列に格納されています: ValueString、ValueInt、ValueBool、ValueDateTime、ValueFloat、ValueDecimal)。一意のキーは、データベース内の設定を表します。

イベント オブジェクトをロードしたらすぐにローカル キャッシュに保存して、すばやくアクセスできるようにします。

すべてをオブジェクトにキャストする必要がありますか? (設定を取得/設定するための不要なキャストのように感じます)

class Event
{
    // string = settings key
    Dictionary<string, object> _settings;

    public void AddSetting(string key, object value)
    public object GetSetting(string key)
}

または、別の辞書に入れる必要がありますか?

class Event
{
    // string = settings key
    Dictionary<string, string> _settingStrings;
    Dictionary<string, int> _settingInts;
    ...

    public void AddSetting(string key, string value)
    public void AddSetting(string key, int value)
    ...

    public string GetStringSetting(string key)
    public int GetIntSetting(string key)    
    ...
}

何か案は?

4

2 に答える 2

0

私はdasblinkenlightの答えが本当に好きです。

データ型ごとに 1 つの列を無駄にするのではなく、データテーブルに1 つの列(おそらく VARCHAR) だけを使用したいと考えています。

これの利点:

  • 読み取りの高速化 (インデックス付きの列は 1 つだけ)
  • ストレージの節約 (行ごとに 1 つの varchar のみ)

そして、前述のようにジェネリックを使用するか、実装内の文字列オブジェクトを目的の型にキャストできます。

于 2013-06-22T10:14:30.943 に答える