NHibernate Asignación de una propiedad de subclase a otro objeto a través de una clave externa

Estoy trabajando en una estructura de datos existente que no es perfecta y tengo un problema de mapeo de herencia que resolver.

Estoy usando una tabla por jerarquía y tengo subclases con discriminadores configurados. Sin embargo, las propiedades de las subclases son claves externas para otras tablas. ¿Cómo configuro mi mapeo de subclase para que cuando consulto la propiedad fk obtenga un objeto en lugar de nulo? ¿Es esto siquiera posible?

Mi mapeo actual

<?xml version="1.0" encoding="utf-8" ?>
      <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MVC3" namespace="MVC3.Models">
  <class name="Image" table="Images">
<id name="Id" column="ImageId">
  <generator class="identity" />
</id>
<discriminator column="ImageType" />
<property name="Url" column="Url" not-null="true" />
<property name="Caption" column="Caption" />
<subclass name="AupairImage" discriminator-value="AupairImage">
  <join table="Aupairs" inverse="true">
    <key column="AupairId" />
    <many-to-one name="Aupair" column="AupairId" class="Aupair" />
  </join>
</subclass>
<subclass name="FamilyImage" discriminator-value="FamilyImage">
  <join table="Families" inverse="true">
    <key column="FamilyId" />
    <many-to-one name="Family" column="FamilyId" class="Family" />
  </join>      
</subclass>

Me gustaría agregar un diagrama de entidad pero aún no puedo publicar imágenes: 0 (

Pero las claves externas AupairId y FamilyId se vinculan a otras dos tablas y son del tipo int 32

Sé que sería mejor reestructurar las entidades Aupair And Family para tener una jerarquía para deshacerse de la de las imágenes, pero este sería un último recurso debido al código existente.

Gracias de antemano por cualquier ayuda apreciada por sus expertos en mapeo ....

preguntado el 10 de mayo de 11 a las 13:05

1 Respuestas

Me di cuenta de lo que estaba haciendo mal después de echar un segundo vistazo, debería haber usado un Many-To-One en la subclase con una columna definida

    <subclass name="MVC3.Models.FamilyImage, MVC3" discriminator-value="FamilyImage">
     <many-to-one cascade="all" class="MVC3.Models.Family, MVC3" name="Family">
        <column name="FamilyId" />
      </many-to-one>
    </subclass>

contestado el 18 de mayo de 11 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.