Подтвердить что ты не робот

NHibernate 2.0 - отображение отношения составного id * и * many-to-one приводит к ошибке "недопустимый индекс"

У меня проблема. Представьте себе эту модель данных:

[Person] table has: PersonId, Name1  
[Tag] table has:  TagId, TagDescription  
[PersonTag] has: PersonId, TagId, IsActive

Так как [PersonTag] - это не просто простая таблица соединений "много-ко-многим", у меня есть все три объекта, созданные в nHibernate (точно так же, как в модели данных). PersonTag, следовательно, требует составной идентификатор, который я сопоставил с таким классом:

<composite-id name="PersonTagKey" class="PersonTagKey">
  <key-property name="PersonId"></key-property>
  <key-property name="TagId"></key-property>
</composite-id> 

Я хочу пересечь граф объектов и иметь возможность искать объекты Person и Tag из полученного объекта PersonTag. Итак, у меня есть свойства объекта PersonTag для этого, отображаемого следующим образом:

<many-to-one name="Person" column="PersonId" lazy="proxy" cascade="none" class="Person"/>
<many-to-one name="Tag" column="TagId" lazy="proxy" cascade="none" class="Tag"/>

Когда я пытаюсь создать объект PersonTag и сохраняю его, я получаю "Недопустимый индекс n для этой ошибки SqlParameterCollection с Count = n". Я знаю, это связано с тем, что я дважды сопоставлял свойства PersonId и TagId, один раз для составного идентификатора и один раз для отношения "много-к-одному" . Если я не сопоставляю объекты "много-к-одному" , все работает нормально.

Есть ли какой-то способ для меня иметь составной идентификатор И отношение "много-к-одному" , основанное на том же столбце, смоделированном в одном и том же элементе nHibernate?

4b9b3361

Ответ 1

Кей, вот ответ. Документация по малому запросу:

<composite-id name="PersonTagKey" class="PersonTagKey"> 
  <key-many-to-one name="Person" column="PersonId" lazy="proxy" class="Person">
  <key-many-to-one name="Tag" column="TagId" lazy="proxy" class="Tag"/>
</composite-id>

Это позволит вам создать составной идентификатор, состоящий из обратного отношения "много-к-одному".

Хорошая охота...