Ich habe ein Problem. Stellen Sie sich dieses Datenmodell:nHibernate 2.0 - Zuordnung einer Composite-ID * und * viele-zu-eins-Beziehung verursacht "ungültiger Index" Fehler
[Person] table has: PersonId, Name1
[Tag] table has: TagId, TagDescription
[PersonTag] has: PersonId, TagId, IsActive
Da [PersonTag]
ist nicht nur ein einfacher many-to-many-Tisch sitzen, ich habe alle drei Einheiten in nHibernate erstellt (genau wie sie im Datenmodell sind). PersonTag
muss deshalb ein Verbund-ID, die ich so zu einer Klasse zugeordnet haben:
<composite-id name="PersonTagKey" class="PersonTagKey">
<key-property name="PersonId"></key-property>
<key-property name="TagId"></key-property>
</composite-id>
Ich möchte das Objekt Diagramm zu durchqueren, und beide zu schauen in der Lage an den Person
und Tag
Objekte aus einer abgerufenen PersonTag
Objekt. Also, ich habe Eigenschaften auf das PersonTag
Objekt, das zu tun, wie dies abgebildet:
<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"/>
Wenn ich versuche, ein PersonTag
Objekt zu erstellen und speichern, erhalte ich einen „Invalid Index n für diese SqlParameterCollection mit Count = n " Fehler. Ich weiß, das liegt daran, dass ich die Eigenschaften PersonId
und TagId
zweimal zugeordnet habe, einmal für die Composite-ID und einmal für die Viele-zu-Eins-Beziehung. Wenn ich die Viele-zu-Eins-Objekte nicht abbilde, funktioniert alles gut.
Gibt es eine Möglichkeit für mich, eine Composite-ID UND eine Viele-zu-Eins-Beziehung basierend auf derselben Spalte in derselben nHibernate-Entität modellieren zu können?
BTW, ich kam gerade über die "key-many-to-one" Subelement in Composite-id ... könnte, dass es sein? –