2

アプリケーション全体の設定テーブルを作成しようとしています:

Settings

Name     | Value
--------------------------
Config1  | "A text string"
Config2  | "true"
Config3  | "100"

名前と値はどちらも varchar 型です。これを何らかの方法で Settings クラスの Dictionary オブジェクトにマップしようとしています:

public class ApplicationSettings 
{
    protected virtual void IDictionary Settings { get; set; }

    public string Config1 {
        get { return Settings["Config1"]; }
        set { Settings["Config1"] = value; }
    }
    // etc
}

注:この前の質問は、私がやろうとしていることに最も近いものですが、使用されている NHibernate マッピングは示されていません。

NHibernate には <map/> タグがあるので、そのような辞書を別のマップされたオブジェクト (たとえば、User クラスにマップされた UserSettings 辞書) にアタッチできます。しかし、私の場合、これらはグローバル設定であるため、アタッチする親オブジェクトはありません。

この状況でマッピングがどのように見えるか、または <map/> タグを使用できない場合、このタイプのテーブルからロードおよび保存する他の方法 (基準クエリ、名前付き SQL クエリ) を誰かが説明できますか?

4

1 に答える 1

1
public class Setting
{
    public virtual For Id { get; set; }
    public string Value { get; set; }
}

public enum For
{
    Config1,
    Config2,
}


// initialize once
void LoadSettings(ISession session)
{
    Application.Settings = session.Query<Setting>().AsEnumerable().ToDictionary(s => s.Id, s => s.Value);
}

// get on demand with caching
var config1 = session.Get<Setting>(For.Config1).Value;
于 2012-05-18T13:01:09.450 に答える