Hola,

Bueno, una relacion m-to-m basica se puede mapear con la etiqueta
<many-to-many>, sin embargo, como en tu caso, la relacion tiene atributos y
el <many-to-many> no es suficiente.  Para esto entonces, una opcion, es
utilizar un composite-element para mapear los atributos de la relacion entre
dos "Entidades <http://www.nhforge.org/doc/nh/en/index.html#mapping-types>"
en un "component
<http://www.nhforge.org/doc/nh/en/index.html#components>" evitandonos
el "overhead" de mantener toda una "Entidad" ya que su unicidad unicidad se
puede obtener basado en los atributos de la relacion.

Saludos,
Nestor Rodriguez

2011/9/7 Dennis Alba <[email protected]>

> Nestor una duda, podrias explicarme en que consiste el
> composite-element, cual es su objetivo, realmente no me queda claro.
> Gracias
>
> El 07/09/11, Dennis Alba <[email protected]> escribió:
> > Gracias por tu respuesta Nestor. Creeme que llevaba tiempo busando
> > ejemplos de como llevar el Composite-Element de xml a Fluent pero no
> > lo habia lohgrado encontrar, ai que ahora le metere mano a ver en que
> > consiste. Saludos
> >
> > El 06/09/11, Nestor Andres Rodriguez <[email protected]> escribió:
> >> Hola,
> >>
> >> Bien que resolviste tu problema.
> >>
> >>    1. Ten en cuenta que si en lugar de exponer un problema en concreto
> >>    colocas una ejemplificacion, se espera que esta sea consistente de
> >> manera
> >>    que si el problema se resuelve en la ejemplificacion tambien esta
> >> solucion
> >>    se pueda replicar en el problema especifico, de lo contrario entonces
> >> es
> >>    preferible exponer directamente el problema.
> >>    2. En cuanto a tu problema de relacion m-to-m, el codigo y el mapeo
> >> que
> >>    te coloque (que al parecer no lo verificaste), soluciona el problema
> >> que
> >>    describes pues te va a generar la BD con las restricciones que tienes
> >> pero
> >>    con el beneficio de tener un dominio orientado a objetos.
> >>    3. No utilizo Fluent pero te puedo asegurar que el mapeo que realize
> >> en
> >>    archivos xml se puede realizar igualmente en Fluent, lo unico
> extranio
> >> es
> >> el
> >>    composite-element, pero este
> >> link<
> http://stackoverflow.com/questions/2960493/fluent-nhibernate-how-does-one-translate-composite-element-tag-to-fnh
> >
> >> muestra
> >>    como se  hace con fluent.
> >>    4. Con respecto a tu discrepancia, creo que tu justificacion me da la
> >>    razon, en objetos no no existen el concepto de relaciones m-to-m ni
> >> llaves
> >>    foraneas; en objeto se manejan relaciones de asociaciones,
> agregaciones
> >> y
> >>    composiciones (uni-bidi) con unos valores de
> >> multiplicidad<
> http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/
> >
> >>    .
> >>
> >>
> >> Saludos,
> >> Nestor Andres Rodriguez
> >>
> >> 2011/9/6 Dennis Alba <[email protected]>
> >>
> >>> muchas gracias a todos por sus respuestas, ya resolvi con HQL.
> >>> Respecto a las opiniones de Nestor, recuerda amigo mio que en el post
> >>> anterior explicaba que lo que ponia no era mas que un ejemplo para que
> >>> pudieran entender lo que neecsitaba, pero que la realidad era mas
> >>> compleja. Estoy pensando en tablas? si un poco y el problema esta en
> >>> que una e las tareas que tengo es crear una estrucutura de clases tal
> >>> que cuando mapee se me genere una BD exctamente igual a una ya
> >>> existente. Por tal motivo cuando creo las clases y sus mapeos si debo
> >>> pensar en como hacerla para cumplir dicho objetivo. Ademas recuerda
> >>> que te explique que realmente tabajaba con FluentNHibernate y que esta
> >>> herramienta no posee todas las posibilidaes que brinda NHibernate con
> >>> la mapeo en XML por tanto debo adaptarme a cambios como usar una clase
> >>> que simule una tabla que sea la relacion m-n entre dos o mas entidades
> >>> en vez de usar el metodo HasManytoMany. Respecto a que en POO no
> >>> existe las relaciones m-n debo discrepar  de hecho, en lo que en BD
> >>> existen solo tres tipos de relaciones:
> >>> 1) 1-1
> >>> 2) 1-m
> >>> 3) m-n
> >>>
> >>> en POO existen mas
> >>> 1-      Uno a uno
> >>> •       Unidireccional
> >>> •       Bidireccional
> >>> 2-      Uno a muchos
> >>> •       Unidireccional
> >>> •       Bidireccional
> >>> 3-      Muchos a uno
> >>> •       Unidireccional
> >>> •       Bidireccional
> >>> 4-      Muchos a muchos
> >>> •       Unidireccional
> >>> •       Bidireccional
> >>> donde el Bidirecional del 2 y el 3 es el mismo por lo que tenemos un
> >>> total de 7 tipos de relaciones en POO, que por supuesto, estas 7 se
> >>> convierten en las 3 de BD.
> >>> Gracias a todos
> >>>
> >>> El 05/09/11, Carlos Peix <[email protected]> escribió:
> >>> > Creo que te va a costar muchisimo usar NH mientras sigas pensando
> >>> > tanto
> >>> > (tantisimo) en tablas. Casi me animaria a decir que puede resultarme
> >>> > mas
> >>> > facil persistir manualmente con ADO.NET y stored procedures y/o SQL
> >>> >
> >>> > De todas maneras, sugiero que pruebes las sugerencias de Nestor.
> >>> >
> >>> > ----------------------------------
> >>> > Carlos Peix
> >>> >
> >>> > 2011/9/5 Dennis Alba <[email protected]>
> >>> >
> >>> >> el ejemplo lo tengo puesto en el post que subi anteriormente "Update
> >>> >> con linq de NHibernate "
> >>> >> imagina que tengo 3 clases
> >>> >> CA
> >>> >> int IdA
> >>> >> string NombA
> >>> >>
> >>> >> CB
> >>> >> int IdB
> >>> >> string NombB
> >>> >>
> >>> >> C-AB
> >>> >> CA instA
> >>> >> CB instB
> >>> >> datetime Fecha
> >>> >>
> >>> >> estas son las tres clases, como puedes ver C-AB es una clase que
> >>> >> tiene
> >>> >> dos entidades una de CA y otra de CB y no tiene un campo que sea la
> >>> >> llave primaria pues en el mapeo, estas instancias seran FK pero su
> >>> >> combinacion sera PK, osea esta clase creara una tabla que simula una
> >>> >> relacion m-m entre esas dos clases. Pues bien el update que necesito
> >>> >> ahcer es el siguiente
> >>> >> supon que tengo insertadas ya en las tablas los siguientes datos
> >>> >> CA IdA NombA
> >>> >>      1    ariel
> >>> >>      2    maria
> >>> >> CB idB NombB
> >>> >>      1    varon
> >>> >>      2   hembra
> >>> >>
> >>> >> C_AB  instA    instB   Fecha
> >>> >>            1          1       05/09/2011
> >>> >> como puedes ver la informacion en C-AB es que ariel(1 en instA) es
> >>> >> varon(1 en instB)
> >>> >> pero yo quiero actualizar esta tabla y que quede de la siguiente
> >>> >> forma:
> >>> >>
> >>> >> C_AB  instA    instB   Fecha
> >>> >>            1          2       05/09/2011
> >>> >> ahora estaria diciendo que ariel(1 en instA) es hembra(2 en instB)
> >>> >> en linq 2 NHiberntae no puedo hacer esto pues el metodo Update que
> >>> >> tiene para que funcione se basa en las llaves primarias, pero es que
> >>> >> presisamente unas de las cosas que quiero modifica es las llaves
> >>> >> primarias, es por ello que necesito programar yo la query. Espero
> >>> >> entiendas el entorno del fenomeno
> >>> >> Gracias
> >>> >>
> >>> >>
> >>> >>
> >>> >> El 05/09/11, Carlos Peix <[email protected]> escribió:
> >>> >> > Que tipo de update querrias hacer?
> >>> >> >
> >>> >> > Nunca me he tenido esta necesidad, con un ORM. Podrias dar un
> >>> >> > ejemplo?
> >>> >> >
> >>> >> > ----------------------------------
> >>> >> > Carlos Peix
> >>> >> >
> >>> >> > 2011/9/5 Banzai <[email protected]>
> >>> >> >
> >>> >> >> Saludos tropa:
> >>> >> >> Dado que no he podido encontrar la forma en que por "linq 2
> >>> >> >> NHibernate" crear un UPDATE no me qeda mas remedio que hacer esta
> >>> >> >> consulta por HQL para seguir garantizando que estas operaciones
> >>> >> >> sean
> >>> >> >> independientes del SGBD. Por tal motivo la pregunta es la
> >>> >> >> siguiente.
> >>> >> >> Sabe alguien como se declara una consulta HQL (Tipo UPDATE) y a
> >>> >> >> quien
> >>> >> >> se debe llamar para que implemente y obtenga el resultado de
> dicha
> >>> >> >> consulta??
> >>> >> >> Muchas gracias a todos
> >>> >> >>
> >>> >> >> --
> >>> >> >> Para escribir al Grupo, hágalo a esta dirección:
> >>> >> >> [email protected]
> >>> >> >> Para más, visite:
> >>> >> >> 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
> >>> >>
> >>> >> --
> >>> >> Para escribir al Grupo, hágalo a esta dirección:
> >>> >> [email protected]
> >>> >> Para más, visite: 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
> >>>
> >>> --
> >>> Para escribir al Grupo, hágalo a esta dirección:
> >>> [email protected]
> >>> Para más, visite: 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
> >
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: 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