J'ai un problème. Imaginez ce modèle de données:nHibernate 2.0 - mappage d'une relation composite-id * et * many-to-one provoque une erreur "index invalide"
[Person] table has: PersonId, Name1
[Tag] table has: TagId, TagDescription
[PersonTag] has: PersonId, TagId, IsActive
Depuis [PersonTag]
est pas un simple many-to-many table de jointure, j'ai les trois entités créées dans NHibernate (exactement comme ils sont dans le modèle de données). PersonTag
donc, a besoin d'un composite id, que je l'ai mis en correspondance avec une classe comme ceci:
<composite-id name="PersonTagKey" class="PersonTagKey">
<key-property name="PersonId"></key-property>
<key-property name="TagId"></key-property>
</composite-id>
Je veux traverser le graphe d'objets et être en mesure de regarder les deux objets de Person
et Tag
un extrait PersonTag
objet. Donc, j'ai propriétés sur l'objet PersonTag
de le faire, cartographié comme ceci:
<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"/>
Lorsque je tente de créer un objet PersonTag
et enregistrez-le, je reçois un « index non valide n pour cette SqlParameterCollection avec Count = n " erreur. Je sais que c'est parce que j'ai mappé deux fois les propriétés PersonId
et TagId
, une fois pour l'ID composite et une fois pour la relation plusieurs-un. Si je ne cartographie pas les objets many-to-one, alors tout fonctionne bien.
Existe-t-il un moyen pour moi d'avoir un composite-id ET une relation many-to-one basée sur la même colonne modélisée dans la même entité nHibernate?
BTW, je viens suis tombé sur le "key-many-to-one" en sous-élément composite id ... pourrait-il que ce soit? –