NHibernate 3.2 By Code (Conformist) ClassMapping для свойства словаря - PullRequest
3 голосов
/ 01 декабря 2011

Предположим, у меня есть класс "SomeClass", который имеет словарь поиска: DataDictionary;

В настоящее время у меня есть отображение в SomeClass.hbm.xml, например:

<class name="SomeClass>

  <id name="ID" type="System.Guid">
    <generator class="guid" />
  </id>

  <map name="DictionaryProperty" table="SomeClass_Data">
    <key column="SomeClassID" />
    <index column="Key" type="System.String" />
    <element column="Value" type="System.String" />
  </map>

</class>

Я хочуиспользовать новую версию NHibernate (версия 3.2) By Code mappings.Как бы я отобразил свойство словаря выше?

В настоящее время у меня есть:

  public class SomeClassMap :ClassMap<SomeClass>
  {

     public SomeClassMap()
     {
        Id(x => x.ID, mapping => mapping.Generator(Generators.Guid));
        Map(x = x.DictionaryProperty, mapping =>
           {
              mapping.Key(k => k.Column("SomeClassID"));
              mapping.Table("SomeClassData");
           });
     }

  }

В основном я затрудняюсь с тем, как указать эквивалент индекса и элемента для сопоставления словаря.

1 Ответ

5 голосов
/ 01 декабря 2011

Каждая часть отображения словаря требует отдельного делегата:

Map(x => x.DictionaryProperty,
    mapping =>
    {
        mapping.Key(k => k.Column("SomeClassID"));
        mapping.Table("SomeClassData");
    },
    mapping => mapping.Element(k => k.Column("Key")),
    mapping => mapping.Element(k => k.Column("Value")));

Первый Element является map-key (index устарел для map), а второйelement.

...