Estoy trabajando con una base de datos existente, y tengo las siguientes tablas:NHibernate mapeo uno a muchos no en clave primaria
Person ExternalFile
------ ------------
Id (int, PK) Key (string)
ConnectionId (int) Type (int)
Name (string) ConnectionId (int)
Firstname (string) Path (string)
Id (int, PK)
Un personal tiene muchos archivos externos.
ejemplo dado:
Person A ExternalFile1 ExternalFile2
-------- ------------- -------------
Id: 1 Key: 'WN' Key: 'WN'
ConnectionId: 29 Type: 4 Type: 4
Name: 'Foo' ConnectionId: 29 ConnectionId: 29
Firstname: 'Bar' Path: 'C:/file1.txt' Path: 'D:/file2.txt'
Id: 1 Id: 2
¿Puedo asignar este modo que un usuario tiene una bolsa de ExternalFiles?
Mis MappingFiles
ExternalFile:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Not.Relative" assembly="Not">
<class name="ExternalFile" table="tbl_externalfiles" lazy="false">
<id name="Id" column="`Id`">
<generator class="identity" />
</id>
<property name="Key" column="`CDKey`" />
<property name="ConnectionId" column="`KeyValue`" />
<property name="Type" column="`DocType`" />
<property name="Path" column="`Path`" />
</class>
</hibernate-mapping>
Persona:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Not.Relative" assembly="Not">
<class name="Person" table="tbl_person" lazy="false">
<id name="Id" column="`Id`">
<generator class="identity" />
</id>
<property name="ConnectionId" column="`pairid`" />
<property name="Name" column="`name`" />
<property name="Firstname" column="`firstname`" />
</class>
</hibernate-mapping>
Mi consulta se vería así:
SELECT *
FROM tbl_externalfiles
WHERE KeyValue = @p0
AND CDKey = @p1
AND DocType = @p2
@p0 = 29, @p1 = 'WN', @p2 = 4
así que tengo que dar 3 parámetros para la bolsa fr personas om a archivos externos,
1: el ID de conexión de la persona
2: 'WN' < - siempre el mismo (la clave)
3: 4 - < siempre el mismo (el tipo)
En muchos a uno esto funciona cuando hago un mapa para una identificación compuesta, pero no puedo usar eso en este caso.
¿Es posible una maleta aquí? ¿Debo simplemente utilizar una consulta adicional para buscar mis archivos externos donde utilizo un criterio para consultar?
EDIT:
sé que puedo hacer lo siguiente para sólo el ID de conexión
<bag name="Files" lazy="false">
<key column="KeyValue" property-ref="ConnectionId"/>
<one-to-many class="ExternalFile" />
</bag>
Pero no sé cómo obtener el tipo y los parámetros clave en allí también.
Gracias
funciona perfecto! Gracias. –
¡Impresionante! No pensé en esto incluso. –