Карта Nhibernate с составным индексом - PullRequest
2 голосов
/ 24 марта 2010

Я новичок в NHibernate и испытываю проблемы, пытаясь смоделировать IDictionary.

Ключ моего дисионатора - это сложный тип с именем «Идентификатор», а соответствующее «значение» имеет тип string, например IDictionary<Identifier,string>.

(извиняюсь, если название объекта «Идентификатор» делает это запутанным, это доменный термин, и я пошел с ним :))

Мое сопоставление выглядит следующим образом:

<map name="Identifiers" table="ShareClassIdentifier" lazy="false" >
  <key>
    <column name="ShareClassIdentifier_ShareClassId"  />
  </key>
  <composite-index class="Identifier">
    <key-property column="ShareClassIdentifier_IdentifierId" name="Id" />
  </composite-index>
  <element column="ShareClassIdentifier_Value" type="System.String"  />
</map>

Что отлично работает, в том смысле, что NHibernate создает мой словарь, и значения для ключей заполняются.Тем не менее, мой идентификатор не заполняется.Объект «Идентификатор» создан, но ему не хватает всех его свойств (кроме идентификатора).

Используя NHibernate Profiler, я вижу, что NHibernate не присоединяется к моей таблице идентификаторов, но я не могу понять, как это указатьприсоединиться к приведенному выше отображению?

Заранее спасибо

1 Ответ

1 голос
/ 24 сентября 2010

Вы отображаете Identifier, как если бы это был компонент с одним свойством (Id).

Если это сущность, замените элемент <composite-index> на:

<map-key-many-to-many class="Identifier"
                      column="ShareClassIdentifier_IdentifierId"/>
...