Hola Marcos,
Ante todo muchísimas gracias por tu respuesta.
He revisado el código que me mandas y no termino de ver como sabe
NHibernate la columna de origen con la que debe hacer el filtrado de la
subcoleccion.
Es decir, según esto:
<set name="NotasElementosList">
<key column="CodigoElementoAsociado" />
<one-to-many class="NotasElementos" />
</set>
Entiendo que ahí dice: defino una coleccion llamada NotasElementosList que
se alimenta de la tabla NotasElementos, y debo filtrar en esa tabla por el
campo CodigoElementoAsociado.
Sin embargo no dice en ningún sitio: Al filtrar por la columna
CodigoElementoAsociado debes utilizar el valor de la columna CodigoCliente
(y no el id definido que es lo que supongo que haría, no?)
<set name="NotasElementosList">
<sourcekey column="CodigoCliente" />
<key column="CodigoElementoAsociado" />
<one-to-many class="NotasElementos" />
</set>
¿Esto es posible?
Gracias de nuevo!
El sábado, 6 de octubre de 2012 01:05:08 UTC+2, Marcos Mellibovsky escribió:
>
> Hola mouthbow:
>
> Me parece que asi te deberia andar:
> <class name="ViewListadoFacturas">
> <id type="Guid">
> <generator class="guid" />
> </id>
> <property name="CodigoFactura" />
> <property name="CodigoCliente" />
> <set name="NotasElementosList">
> <key column="CodigoElementoAsociado" />
> <one-to-many class="NotasElementos" />
> </set>
> </class>
>
> public class ViewListadoFacturas
> {
> public virtual Guid CodigoFactura { get; set; }
>
> public virtual Guid CodigoCliente { get; set; }
>
> public virtual ISet<NotasElementos> NotasElementosList { get; set;
> }
> }
>
>
> El jueves, 4 de octubre de 2012 10:54:51 UTC-3, mouthbow escribió:
>>
>> Buenas tardes a tod@s!
>>
>> Tengo una pregunta que creo que lo mismo es básica pero no encuentro
>> forma de hacer:
>>
>> Necesito definir un set en un archivo de mapping con unas necesidades
>> especiales. He leído varias páginas pero no encuentro nada.
>> Supongamos que tengo un mapping de una Vista SQL
>>
>>
>> <class name="Namespace.ViewListadoFacturas, Assembly"
>> table="ViewListadoFacturas">
>>
>> <id name="CodigoFactura" column="[CodigoFactura]" type="System.Guid">
>> <generator class="assigned"/>
>> </id>
>> <property name="CodigoCliente" column="[CodigoCliente]"
>> access="field.pascalcase-underscore" not-null="true" type="System.Guid"/>
>>
>> </class>
>>
>>
>> Y supongamos que luego un mapping de una clase como este:
>>
>>
>> <class name="Namespace.NotasElementos, MyAssembly" table="NotasElementos"
>> >
>>
>> <id name="Id" column="CodigoNota" type="System.Guid"><generator
>> class="guid"/></id>
>> <property name="CodigoElementoAsociado" column="CodigoElementoAsociado"
>> access="field.pascalcase-underscore" not-null="false" type="System.Guid"
>> insert="true" update="true"/>
>>
>> </class>
>>
>>
>> Donde CodigoCliente de la Vista y CodigoElemento asociado guardan los
>> mismos valores y por tanto podríamos hacer un inner join entre ellos pero
>> se llaman diferente.
>> El nombre es diferente porque en la clase NotasElementos también guardo
>> Notas de Proveedores, Usuarios, etc... De ahí sale el concepto de
>> CodigoElementoAsociado.
>>
>> Al usar Guids evito que dos elementos de clases diferentes compartan ids.
>>
>> La pregunta es:
>>
>> ¿Como puedo mapear las notas del cliente en la vista? Yo necesito hacer
>> algo así:
>>
>>
>>
>> <set name="NotasElementosList" cascade="none" inverse="true" lazy="true"
>> access="field.pascalcase-underscore">
>> <Source key>
>> <column name="CodigoCliente" />
>> </Source key>
>> <Target key>
>> <column name="CodigoElementoAsociado"/>
>> </Target key>
>> <one-to-many class="MyNamespace.NotasElementos, GIOFACT_DAL"/>
>> </set>
>>
>>
>> ¿Es posible hacer esto? La verdad es que esto solucionaría una gran parte
>> de las necesidades que tengo pendientes.
>>
>> Ni que decir que agradezco enormemente por adelantado cualquier ayuda que
>> pueda recibir.
>>
>> Un saludo.
>>
>
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano