ASP.NET MVC3 + ActiveRecord + HasMany + словарь - PullRequest
0 голосов
/ 01 мая 2011

Я пытаюсь получить структуру данных Dictionary для одной из моих моделей ASP.NET MVC. По сути, я хотел бы получить хэш-карту настроек в виде пар ключ-значение. Мой код похож на:

[ActiveRecord]
public class Blog extends ActiveRecordBase<Blog> {
  [Property]
  public IDictionary<string, string> Settings { get; set; }
}

Однако я не знаю, как это реализовать. Я предполагаю, что мне понадобится таблица БД, например BlogSettings, со столбцом ключа и значения; но мне не ясно, как это сделать без создания другой модели.

NHibernate / ActiveRecord жалуются, что:

A HasMany with type Map requires that you specify an 'Index', use the Index property Blog.Settings 

Я попытался добавить фиктивный индекс (так как я не понимаю, как добавить индикаторы с ActiveRecord), например так:

  [Property(Index="")]
  public IDictionary<string, string> Settings { get; set; }

Я не ожидал никаких изменений, но вместо этого я получил другое сообщение об ошибке:

ActiveRecord tried to infer details about the relation Blog.Settings but it could not find information about the specified target type System.String. If you have mapped a Collection or Dictionary of value types, please make sure you have specified the Table property

Поэтому мой вопрос: Что мне нужно (мудро для кода / БД), чтобы настроить мою модель ActiveRecord с словарём пар строковый ключ / значение в качестве одного поля, без создания нового класса для инкапсуляции ключа пары-значения?

1 Ответ

0 голосов
/ 01 мая 2011

Вам нужен IUserType. Вот тот, который реализует a IUserType, очень похожий на то, что вам нужно.

Затем используйте свойство ColumnType атрибута [Property] для ссылки на полное имя типа вашего IUserType.

...