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