Relaciones Mucho a Mucho con 3 tablas o mas Y agregar campos a una relacion M-M

103 views
Skip to first unread message

Banzai

unread,
Dec 7, 2010, 4:01:14 PM12/7/10
to NHibernate-Hispano
Saludos tropa:
Me he visto en la necesidad de molestar a los miembros de este foro
pues no he encontrado documentacion sobre lo que quiero hacer.
Realmenmte uso Fluent NHibernate pero tambien me estudio por cada
metodo que este tiene su equivalente en los tag de NHibernate.

PREGUNTA 1: como hacer un mapeo de tres entidades cuya relacion es
mucho amucho entre ellas y dé, como resultado, 4 tablas en la
respectiva BD, tres que son las tablas de las clases que se persisten
y una que es la tabla que las relciona y que los id de las tres
entidades esten aqui como llave primaria. Esto lo he podido hacer pero
cuando más solo dos Id me salen como llaves primarias de esta tabla,
siempre se me queda afuera uno.

PREGUNTA 2: cuando logro mapear una relacion M-M entre dos entidades
se me generan perfectamente las dos tablas de las clases persistentes
y la tabla que es la relacion entre ella con los Id como llaves, pero
esta relacion puede tener campos propios. Por ejemplo una PERSONA
solicita un prestamo de varios EJEMPLEAR_DE_LIBRO y un
EJEMPLEAR_DE_LIBRO puede ser solicitado por mas de una PERSONA pero
esa relacion tendra campos propios que serian fecha de prestamo y
fecha de devolucion, pues bien como pueden mapeearse estos dos nuevos
campos a esa tabla que es quien relaciona las entidades PERSONA y
EJEMPLEAR_DE_LIBRO.
Gracias a todos por su ayuda.

José F. Romaniello

unread,
Dec 7, 2010, 5:39:11 PM12/7/10
to nhibernat...@googlegroups.com
Buenas tardes Soldado, 


El 7 de diciembre de 2010 18:01, Banzai <alba...@gmail.com> escribió:
PREGUNTA 1: como hacer un mapeo de tres entidades cuya relacion es
mucho amucho entre ellas y dé, como resultado, 4 tablas en la
respectiva BD, tres que son las tablas de las clases que se persisten
y una que es la tabla que las relciona y que los id de las tres
entidades esten aqui como llave primaria. Esto lo he podido hacer pero
cuando más solo dos Id me salen como llaves primarias de esta tabla,
siempre se me queda afuera uno.

Podrías mostrar un ejemplo con un dominio real donde se te presente este caso Many To Many con 3 entidades?


PREGUNTA 2: cuando logro mapear una relacion M-M entre dos entidades
se me generan perfectamente las dos tablas de las clases persistentes
y la tabla que es la relacion entre ella con los Id como llaves, pero 
esta relacion puede tener campos propios. Por ejemplo una PERSONA
solicita un prestamo de varios EJEMPLEAR_DE_LIBRO   y un 
EJEMPLEAR_DE_LIBRO puede ser solicitado por mas de una PERSONA pero 
esa relacion tendra campos propios que serian fecha de prestamo y 
fecha de devolucion, pues bien como pueden mapeearse estos dos nuevos 
campos a esa tabla que es quien relaciona las entidades PERSONA  y 
EJEMPLEAR_DE_LIBRO.

Es un común que suceda eso, cuando una many-to-many empieza a tener propiedades, lo que tenes que hacer es convertirla a entidad.

Fabio Maulo

unread,
Dec 7, 2010, 5:39:44 PM12/7/10
to nhibernat...@googlegroups.com
Potpourri!!!
Volvé a hacer el mismo discurso hablando solo de clases y propiedades (que no es lo mismo que hablar de tablas y columnas) y verás que se logra entender mejor y te va a aparecer la solucción.

2010/12/7 Banzai <alba...@gmail.com>

--
Para escribir al Grupo, hágalo a esta dirección: NHibernat...@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano



--
Fabio Maulo

Fabio Maulo

unread,
Dec 7, 2010, 5:44:14 PM12/7/10
to nhibernat...@googlegroups.com
ok... ok... intento ser mas claro.
El problema que tenes es que pensaste tu tablas y ahora tu problema no es el mapeo (que es lo que está en el medio) si no que es que no sabes como representar esas tablas en clases.
El proceso que tenes que aprender, que es el motivo por el qual existen los ORM (en este caso M=mappers), es al revez: ante pensas, implementas y testeas tu dominio y solo luego decidis como representarlo en esa cosa fea a dos dimensiones que llama DB.

2010/12/7 Fabio Maulo <fabio...@gmail.com>



--
Fabio Maulo

Reply all
Reply to author
Forward
0 new messages