Отображение FluentNHibernate для словаря - PullRequest
3 голосов
/ 11 сентября 2009

Каков наилучший способ сопоставления простого свойства Dictionary с помощью Fluent NHibernate?

Ответы [ 3 ]

6 голосов
/ 12 декабря 2009

Использование простых отношений классов, таких как:

public class Foo {
    public virtual IDictionary<string, Bar> Bars { get; set; }
}

public class Bar {
    public virtual string Type { get; set; }
    public virtual int Value { get; set; }
}

Вы можете сопоставить это с Fluent NHibernate следующим образом:

mapping.HasMany(x => x.Bars)
       .AsMap(x => x.Type);

Где Bar.Type используется в качестве ключевого поля в словаре.

6 голосов
/ 16 октября 2014
public class PersistedData 
{
    public virtual IDictionary<key, value> Dictionary { get; set; }
}

public class PersistedDataMap : ClassMap<PersistedData>
{
    HasMany(x => x.Dictionary)
            .Table("dict_table")
            .KeyColumn("column_id")
            .AsMap<string>("key")
            .Element("value");
}

Это правильно сопоставит Dictionary с таблицей dict_table и использует column_id, чтобы связать его с базовым идентификатором.

В качестве примечания: если вы хотите использовать Enum в качестве ключа в словаре, следует отметить, что вместо строки в * 1008 можно использовать NHibernate.Type.EnumStringType<MyEnum>, чтобы использовать строковое значение вместо Порядковый номер.

3 голосов
/ 13 сентября 2009

Чтобы отобразить список как словарь:

HasMany(x => x.Customers)
  .AsMap();

Я не использовал его; поэтому не могу привести пример.

Посмотрите на вики: Кэшированная версия страницы , Актуальная страница Я дал кешированную версию страницы в качестве сайта кажется, вниз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...