Hola,

1) No existe un mapeo de muchos a muchos.  PC esta mapeado como una
"entidad" y no como una tabla para guardar la relacion de las entidades P y
C.

2) En la tabla Videos no tienes la columna CID.

3) No existe la columna VID en en la tabla Videos.

4) Creeria que el <key column="VID"> en el mapeo de PC->Videos deberia ser
<key column="PCID">, creeria que alli es donde tienes el problema porque
quizas estas utilizando VID como llave principal para Videos y como Llave
foranea para la coleccion PC->Videos

5) Estas haciendo un mapeo one-to-many bidireccional entre C->PC asi que el
inverse ="true" haria falta en C->PC.

6) Tienes una relacion bidireccional entre PC y videos.  Faltaria el
Inverse="true" en la coleccion PC->Videos

-Estas seguro que enviaste el disenio de base de datos correcto?
- Utiliza el SchemaExport para generar tu base de datos y que no se
presenten tantas inconsistencias.
- O Utiliza un SchemaValidator para validar tu base de datos con respecto al
mapeo.
-Quizas podrias modificar tu disenio para no tener las entidades tan
acopladas unas a otras.
-Si tienes un disenio en terminos de clases podria ayudar a validar mejor tu
mapeo.
Saludos,
Nestor Andres Rodriguez


2011/6/23 Juan Francisco <[email protected]>

> Hola, qué tal. Estoy haciendo un proyecto con NHibernate 3 y tengo un
> problema con uno de mis mapeos.
>
> Tengo una relación many-to-many entre dos tablas, con lo cual he agregado
> una nueva tabla intermedia, con su mapeo correspondiente, y que contiene los
> Id de cada una de ambas tablas y también tiene una relación one-to-many con
> otra tabla.
>
> Este es el diagrama que tengo:
>
> http://img842.imageshack.us/**img842/1609/23062011104035.png<http://img842.imageshack.us/img842/1609/23062011104035.png>
>
> Mis mapeos son estos:
>
> <class name="C" table="C" lazy="false">
> <id column="Id" type="int" unsaved-value="0">
> <generator class="identity"></generator>
> </id>
> <property name="Numero" length="20" type="string" not-null="true"
> unique="true"></property>
> <property name="Duracion" type="int" not-null="true"></property>
> <property name="FechaInicio" type="DateTime" not-null="true"></property>
> <property name="FechaFin" type="DateTime" not-null="true"></property>
> <property name="Activo" type="bool"></property>
> <many-to-one name="Cliente" column="ClienteId"
> class="Cliente"></many-to-one>
> <bag name="PC" table="PC" inverse="false">
> <key column="CId"></key>
> <one-to-many class="PC"></one-to-many>
> </bag>
> </class>
>
> <class name="P" table="P" lazy="false">
> <id column="Id" type="int" unsaved-value="0">
> <generator class="identity"></generator>
> </id>
> <property name="Nombre" length="50" type="string" not-null="true"
> unique="true"></property>
> <bag name="PC" table="PC" inverse="true">
> <key column="PId"></key>
> <one-to-many class="PC"></one-to-many>
> </bag>
> </class>
>
> <class name="PC" table="PC" lazy="false">
> <id column="Id" type="int" unsaved-value="0">
> <generator class="identity"></generator>
> </id>
> <many-to-one name="C" column="CId" class="C"></many-to-one>
> <many-to-one name="P" column="PId" class="P"></many-to-one>
> <property name="Duracion" type="int" not-null="true"></property>
> <bag name="V" table="Videos">
> <key column="VId"></key>
> <one-to-many class="V"></one-to-many>
> </bag>
> </class>
>
> <class name="V" table="Videos" lazy="false">
> <id column="Id" type="int" unsaved-value="0">
> <generator class="identity"></generator>
> </id>
> <property name="Nombre" length="75" type="string"
> not-null="true"></property>
> <property name="Ruta" length="150" type="string"
> not-null="true"></property>
> <many-to-one name="C" column="CId" lazy="false"></many-to-one>
> <many-to-one name="PC" column="PCId" class="PC"></many-to-one>
> </class>
>
> Pero resulta algo anda mal porque me aparece el siguiente error:
>
> "Found shared references to a collection: VS.NH.C.PC"
>
> ¿Por qué puede estar pasando esto?
> Muchas gracias.
>
> --
> Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano@**
> googlegroups.com <[email protected]>
> Para más, visite: 
> http://groups.google.com/**group/NHibernate-Hispano<http://groups.google.com/group/NHibernate-Hispano>

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a