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 回答