Ho un problema. Immaginate questo modello di dati:nHibernate 2.0 - mappare un ID composito * e * una relazione molti-a-uno causa l'errore "indice non valido"
[Person] table has: PersonId, Name1
[Tag] table has: TagId, TagDescription
[PersonTag] has: PersonId, TagId, IsActive
Dal [PersonTag]
non è solo una semplice tabella molti-a-molti unirsi, ho tutti e tre i soggetti creati in NHibernate (esattamente come sono nel modello di dati). PersonTag
, pertanto, ha bisogno di un composite-id, che ho mappato a una classe come questa:
<composite-id name="PersonTagKey" class="PersonTagKey">
<key-property name="PersonId"></key-property>
<key-property name="TagId"></key-property>
</composite-id>
voglio attraversare l'oggetto grafico ed essere in grado di guardare entrambe le Person
e Tag
oggetti da un recuperato PersonTag
oggetto. Così, ho proprietà dell'oggetto PersonTag
per farlo, mappato in questo modo:
<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"/>
Quando cerco di creare un oggetto PersonTag
e salvarlo, ottengo un "indice n non valido per questo SqlParameterCollection con Count = n "Errore. Lo so perché ho mappato le proprietà PersonId
e TagId
due volte, una volta per l'ID composito e una volta per la relazione molti-a-uno. Se non mappo gli oggetti molti-a-uno, allora tutto funziona correttamente.
C'è un modo per me di essere in grado di avere un ID composito E una relazione molti-a-uno basata sulla stessa colonna modellata nella stessa entità ibernata?
A proposito, ho appena incontrato il sottoelemento "chiave-molti-a-uno" in composito-id ... potrebbe essere che esso? –