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
