MUCHAS GRACIAS DENNIS TE PASASTE Y SI MIRA JUSTO ESTABA VIENDO LAS DEMAS
TABLAS Y VOY A TENER QUE AGREGAR CLAVES DE OTRAS ENTIDADES Y PONERLAS COMO
PRIMARIAS EN OTRA ENTIDAD POR EJEMPLO TE PONGO UN CASO:

TENGO LA ENTIDAD CULTIVO EN DONDE ADEMAS DE TENER EL CAMPO CULTIVO_ID SE
CONSIDERA TAMBIEN LAS CLAVES DE OTRAS ENTIDADES ( PAIS_ID, CIUDAD_ID,
FUNDO_ID) ES DECIR LA CLAVE PRINCIPAL DE LA ENTIDAD CULTIVO SERIA:

--> PAIS_ID, CIUDAD_ID, FUNDO_ID, CULTIVO_ID

LAS LLAVES QUE VIENEN DE LAS OTRAS ENTIDADES SON ESTAS:

PAIS ( PAIS_ID)
CIUDAD ( PAIS_ID, CIUDAD_ID)
FUNDO ( PAIS_ID, CIUDAD_ID, FUNDO_ID)

OJALA ME ENTIENDAS LA IDEA Y ME ORIENTES.

El 14 de junio de 2011 10:09, Dennis Alba <[email protected]> escribió:

> realmente no, lo he usado en varios proyectos y funciona bien, incluso
> cuando partes de la llave son a su vez llaves foraneas de otras
> clases, que entonces el codigo del mapeo cambia un poco, te lo puedo
> mostrar cuando lo necesites, porque es muy probable que en algun
> momento lo requieras. El unico inconveniente de esta forma de mapeo de
> llaves compuestas es que no he logrado ponerle el tamaño del campo que
> yo deseo, Osea si se lo pongo peo en la BD no lo coge, pone el tamaño
> que desee la BD. Pero por lo demas funciona bien.
> Me explico referente al tamaño:
>
> si te fijas en el codigo que te di, en el mapeo de los campos se
> especifica el tamaño que tendran en la BD los campos NOMBREANALISIS y
> ESTADO(este ultimo veo que te lo repeti, esta demas porque ya esta en
> la llave compuesta)
>
> Map(x =>
> x.nombreAnalisis).Column("NOMBREANALISIS").Not.Nullable().Length(15);
>
> como ves, a NOMBREANALISIS le dije que tendra un tamaño de 15
> caracterres en la BD, esto asi funciona perfectamente, pero cuando lo
> ponemos como parte de una llave compuesta le puedes especificar todo
> lo que quieras que al final en la BD no lo coge, Para especificar el
> tamaño en la llave compuesta se hace como te pongo abajo:
>
>            // Llave primaria
>            CompositeId().KeyProperty(x => x.IdAnalisis, c =>
> c.ColumnName("ID_ANALISIS").Length(8))
>                .KeyProperty(x => x.Estado, c =>
> c.ColumnName("ESTADO").Length(10)).KeyProperty(x => x.Pasaporte, c =>
> c.ColumnName("PASAPORTE").Length(10))
>                .KeyProperty(x => x.Sololicitud, c =>
> c.ColumnName("SOLICITUD").Length(15));
>
> que no te lo habia puesto porque ya te digo no me funciona, pero igual
> ahi lo tienes para que lo domines para que cuando funcione sepas como
> usarlo.
>
> El 14/06/11, Anthony Campos <[email protected]> escribió:
> > Muchas gracias DENNIS, es justo lo que estaba buscando, pero dime es
> > recomendable hacer eso es decir no habria alguna dificultad en el
> transcurso
> > del desarrollo?
> >
> > Saludos-
> >
> > El 14 de junio de 2011 09:46, Dennis Alba <[email protected]> escribió:
> >
> >> si existe y es de la siguiente forma, supon que tienes una clase
> >> Analisis con la siguiente estructura
> >>
> >>    public partial class Analisis
> >>    {
> >>        public virtual long IdAnalisis { get; set; }
> >>        public virtual string nombreAnalisis { get; set; }
> >>
> >>        //campos de la otra clase necesarios para la llave compuesta y
> >> foranea
> >>        public virtual string Sololicitud { get; set; }
> >>        public virtual long Pasaje { get; set; }
> >>        public virtual string Estado { get; set; }
> >>
> >>        //public virtual Proyecto proInst { get; set; }
> >>
> >>
> >>        public override int GetHashCode()
> >>        {
> >>            return this.IdAnalisis.GetHashCode() +
> >> this.Sololicitud.GetHashCode()
> >>                   + this.Pasaje.GetHashCode() +
> this.Estado.GetHashCode();
> >>        }
> >>
> >>        public override bool Equals(object obj)
> >>        {
> >>            return base.Equals(obj);
> >>        }
> >>    }
> >>
> >> OJO los metodos GetHashCode y Equals los debes redefinir como vez, de
> >> lo contrario no funcionara.
> >>
> >> luego hacemos el respectivo mapeo
> >>
> >>    public class MapeoAnalisis: ClassMap<Analisis>
> >>    {
> >>        public MapeoAnalisis()
> >>        {
> >>            // nombre de la tabla
> >>            Table("P_ANALISIS");
> >>
> >>            // Llave primaria compuesta
> >>            CompositeId().KeyProperty(x => x.IdAnalisis, "ID_ANALISIS")
> >>                .KeyProperty(x => x.Estado, "ESTADO").KeyProperty(x =>
> >> x.Pasaje, "PASAJE")
> >>                .KeyProperty(x => x.Sololicitud, "SOLICITUD");
> >>
> >>
> >>            // Campos de la tabla
> >>            Map(x =>
> >> x.nombreAnalisis).Column("NOMBREANALISIS").Not.Nullable().Length(15);
> >>            Map(x =>
> x.Estado).Column("ESTADO").Not.Nullable().Length(15);
> >>
> >>        }
> >>    }
> >>
> >> esto es siempre que las llaves primarias este compuesto por campos
> >> propios de esta clase Analisis
> >>
> >> El 14/06/11, Anthony Campos <[email protected]> escribió:
> >>  > Estimados una consulta, estoy utilizando el fluent nhibernate y
> >> quisiera
> >> > saber si es posible poder mapear como ID varias columnas?
> >> >
> >> > Si se pudiera hacer eso diganme es recomendable hacer eso? Habria
> alguna
> >> > implicancia en hacer ese tipo de mapeo?
> >> >
> >> > 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

Responder a