one many classmapping nhibernate nhibernate-mapping

many - nhibernate sessionfactory connection string



nHibernate 2.0: mapear una relación de identificación compuesta*y*de varios a uno provoca un error de "índice no válido" (1)

Kay, aquí está la respuesta. Poco o nada de documentación sobre esto:

<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>

Esto le permitirá crear una identificación compuesta compuesta de la inversa de una relación muchos a uno.

Buena caza...

Tengo un problema. Imagina este modelo de datos:

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

Dado que [PersonTag] no es simplemente una tabla simple de muchos a muchos, tengo las tres entidades creadas en nHibernate (exactamente como están en el modelo de datos). PersonTag , por lo tanto, necesita una identificación compuesta, que he asignado a una clase como esta:

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

Quiero atravesar el gráfico del objeto y ser capaz de mirar los objetos Person y Tag desde un objeto PersonTag recuperado. Entonces, tengo propiedades en el objeto PersonTag para hacer eso, mapeado así:

<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"/>

Cuando trato de crear un objeto PersonTag y guardarlo, aparece el error "Índice n no válido para este SqlParameterCollection with Count = n" . Sé que esto se debe a que he mapeado las propiedades PersonId y TagId dos veces, una para la identificación compuesta y una para la relación de muchos a uno. Si no mapeo los objetos muchos a uno, todo funciona bien.

¿Hay alguna forma de que yo pueda tener una identificación compuesta Y una relación de muchos a uno basada en la misma columna modelada en la misma entidad nHibernate?