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
