(Свободно) NHibernate: сопоставление полной таблицы с одним объектом - PullRequest
1 голос
/ 22 августа 2011

У меня есть следующая таблица базы данных:

Settings

Key            | Value
---------------|-------------------
SomeSetting    | Foo
AnotherSetting | Bar
...            | ...

И я хочу сопоставить это со следующим объектом:

public class Settings
{
      public virtual string SomeSetting { get; set; }

      public virtual string AnotherSetting { get; set; }
}

Как я могу сделать это, используя (Свободно) NHibernate?

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Я бы сопоставил пары ключ / значение с частным IDictionary и выставил свойства, открыв словарь.См. запись в блоге Айенде на карте для создания словаря.Что-то вроде:

public class Settings
{
    private IDictionary<string, string> _dict;

    //initialize dictionary in constructor
    public Settings()
    {
         _dict = new Dictionary<string, string> { {"SomeSetting", string.Empty} };
    }

    public virtual string SomeSetting
    {
        get { return _dict["SomeSetting"]; }
        set { _dict["SomeSetting"] = value; }
    }

    // etc.

}
0 голосов
/ 22 августа 2011

Что ж, альтернативой было бы иметь два столбца: Key, Value

, сопоставить их со столбцом в базе данных и теперь написать класс хранилища со свойствами, который будет отвечать за запрос базы данных к ключу и получениеЗначение.ваша модель хранилища может напоминать вашу текущую объектную модель.

public class Settings
{
      private readonly ISession _session;
      public Settings(ISEssion session)
      {
      _session=session;
      }
      public Setting SomeSetting { get {return session.QueryOver<Setting>().SingleOrDefault(x.Key=="SomeSetting "} }

}

что вы думаете?

...