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
