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