У меня проблема. Представьте себе эту модель данных:
[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?