Debes mapearlo no como un many-to-many sino como un composite-element. Con fluent mira este ejemplo: http://stackoverflow.com/questions/2960493/fluent-nhibernate-how-does-one-translate-composite-element-tag-to-fnh
2011/6/22 Dennis Alba <[email protected]> > lo estoy chequeando pero el fluent no tiene como especificar mas > campos para la tabla que se generara para establecer la relacion, lo > mas que te deja a hacer es poner el nombre de la tabla y las llave PK > FK del padre , pero nada mas > > El 22/06/11, Nestor Andres Rodriguez <[email protected]> escribió: > > Ok, bien. Pero chequeaste el mapeo que te sugeri ? > > > > 2011/6/22 Dennis Alba <[email protected]> > > > >> eso mismo era mi hermano, gracias, nunca hago eso y esta vez lo hice > >> sin percatarme. Problema resuelto > >> > >> > >> El 22/06/11, Nestor Andres Rodriguez <[email protected]> escribió: > >> > Hola Dennis. Creeria que el inconveniente esta en que tu estas > mapeando > >> dos > >> > veces las mismas propiedades. Si haces CompositeId().KeyReference, no > >> > es > >> > necesario que vuelvas a hacer un "References" a la misma propiedad. > >> > > >> > Saludos, > >> > > >> > 2011/6/22 Dennis Alba <[email protected]> > >> > > >> >> Haber te cuento Nestor: > >> >> 1- uso fluent Nhibernate, por tal motivo no eleve los ficheros hbm(no > >> >> las hay) ni las clases de mapeo pues se que la mayoria del foro usa > >> >> solo NHibernate. > >> >> 2- en realidad las clases las cree como si fueran tablas ya que al > >> >> menos Fluent (y creo que Nhibernate tambien) pueden mapearte dos > >> >> entidades cuya relacion sea m-n reandote la 3ra tabla que las > >> >> relaciona siempre y cuando esta no tenga valores agregados, pero como > >> >> en mi caso necesito que la tabvla que relacion a las otras dos tenga > >> >> ademas de sus llaves P otros campos como la fecha ya el metodo que > >> >> trae Fluent no me sirve, por tal motivo es que tube que crear las > >> >> clases como si fueran las tablas. > >> >> de todas formas aqui te paso las clases de mapeo: > >> >> > >> >> public GrupoMap() > >> >> { > >> >> // definicionde la tabla > >> >> Table("P_GRUPO"); > >> >> > >> >> // definicion de la llave primaria de la tabla > >> >> Id(x => x.IdGrupo).Column("ID_GRUPO").GeneratedBy.Native(); > >> >> > >> >> //campos a mapear > >> >> Map(x => > x.NombGrupo).Column("GRUPO").Nullable().Length(10); > >> >> Map(x => x.Anno).Column("ANO").Nullable().Length(2); > >> >> } > >> >> } > >> >> public GrupoMap() > >> >> { > >> >> // definicionde la tabla > >> >> Table("P_GRUPO"); > >> >> > >> >> // definicion de la llave primaria de la tabla > >> >> Id(x => x.IdGrupo).Column("ID_GRUPO").GeneratedBy.Native(); > >> >> > >> >> //campos a mapear > >> >> Map(x => > x.NombGrupo).Column("GRUPO").Nullable().Length(10); > >> >> Map(x => x.Anno).Column("ANO").Nullable().Length(2); > >> >> } > >> >> } > >> >> > >> >> public ProfesorGrupoMap() > >> >> { > >> >> // definicionde la tabla > >> >> Table("P_PROFESOR_GRUPO"); > >> >> > >> >> // definicion de la llave primaria de la tabla > >> >> CompositeId().KeyReference(x => x.p_Grupo, "ID_GRUPO") > >> >> .KeyReference(x => x.p_Profesor, "ID_PROFESOR"); > >> >> > >> >> //campos a mapear > >> >> Map(x => > >> >> x.Fecha).Column("FECHA").Nullable().CustomSqlType("DATETIME"); > >> >> References(x => x.p_Profesor).Column("ID_PROFESOR"); > >> >> References(x => > >> x.p_Grupo).Column("ID_GRUPO");//.Cascade.All(); > >> >> } > >> >> } > >> >> Reitero, las tablas se mapean bien e incluso puedo insertar bien los > >> >> valores desde SQLServer, el problema esta cuando hago la inserccion a > >> >> la tabla P_PROFESOR_GRUPO desde la aplicacion > >> >> que crees?? > >> >> > >> >> El 22/06/11, Nestor Andres Rodriguez <[email protected]> escribió: > >> >> > Por favor provee los archivos de mapeo. Otra cosa, no has > pensado > >> en > >> >> que > >> >> > el Profesor tenga su coleccion de grupos y viceversa ? Pareciera > >> >> > como > >> >> > si > >> >> > estuvieras mapeando un sistema modelado en tablas y relaciones en > >> lugar > >> >> de > >> >> > objetos. > >> >> > > >> >> > Saludos > >> >> > > >> >> > 2011/6/22 Banzai <[email protected]> > >> >> > > >> >> >> Saludos tropa: > >> >> >> necesito ver si me pueden ayudar con el siguiente error que > plantee > >> en > >> >> >> el titulo de este debate > >> >> >> les pongo mi entorno completo para que puedan entender bien el > >> >> >> problema > >> >> >> tengo las siguientes clases: > >> >> >> > >> >> >> public partial class Profesor > >> >> >> { > >> >> >> public virtual int IdProfesor { get; set; } > >> >> >> public virtual string NombreProfesor { get; set; } > >> >> >> > >> >> >> } > >> >> >> > >> >> >> public partial class Grupo > >> >> >> { > >> >> >> public virtual int IdGrupo { get; set; } > >> >> >> public virtual string NombGrupo { get; set; } > >> >> >> public virtual int Anno { get; set; } > >> >> >> } > >> >> >> > >> >> >> public partial class ProfesorGrupo > >> >> >> { > >> >> >> > >> >> >> public virtual Profesor p_Profesor { get; set; } > >> >> >> > >> >> >> public virtual Grupo p_Grupo { get; set; } > >> >> >> > >> >> >> public virtual DateTime? Fecha { get; set; } > >> >> >> > >> >> >> public override int GetHashCode() > >> >> >> { > >> >> >> return p_Profesor.GetHashCode() + > p_Grupo.GetHashCode(); > >> >> >> } > >> >> >> > >> >> >> > >> >> >> public override bool Equals(object obj) > >> >> >> { > >> >> >> if (ReferenceEquals(null, obj)) return false; > >> >> >> if (ReferenceEquals(this, obj)) return true; > >> >> >> var other = obj as ProfesorGrupo; > >> >> >> if (other == null) return false; > >> >> >> > >> >> >> return (p_Profesor == other.p_Profesor > >> >> >> && p_Grupo == other.p_Grupo > >> >> >> && Fecha == other.Fecha); > >> >> >> } > >> >> >> > >> >> >> } > >> >> >> > >> >> >> cuando hago el mapeo de estas entidades me quedan tres tablas > >> P_GRUPO, > >> >> >> P_PROFESOR, P_PROFESOR_GRUPO, donde la ultima lo que hace no es > mas > >> >> >> que relacionar las dos primeras, ya que contiene sus PK como > llaves > >> de > >> >> >> ella, Vamos que lo que hice fue modelar una relacion n-m entre las > >> dos > >> >> >> primeras (P_GRUPO y P_PROFESOR). > >> >> >> El mapeo se realiza de manera perfecta, el problema esta cuando > >> >> >> trato > >> >> >> de insertar, particularmente en P_PROFESOR_GRUPO. > >> >> >> > >> >> >> el flujo de las inserciones es el siguiente. > >> >> >> > >> >> >> 1ero inserto todos los grupos, FUNCIONA BIEN > >> >> >> 2do luego inserto a los profesores FUNCIONA BIEN > >> >> >> 3ro luego inserto a la clase que los relaciona pasandole ya que > esta > >> >> >> entidad tiene un objeto de Grupo y profesor, pero cuando lo > inserto > >> da > >> >> >> el siguiente error > >> >> >> "Índice 3 no válido para SqlParameterCollection con Count=3." > >> >> >> > >> >> >> alguien sabe que puede ser?? > >> >> >> Mil gracias > >> >> >> > >> >> >> -- > >> >> >> 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
