Я использую наследование таблиц на подклассы в NHibernate. У меня есть родительская таблица Attribute
и дочерняя таблица AccountAttribute
. У дочерней таблицы AccountAttribute
есть еще один внешний ключ для таблицы CustomerProfile
. Таблица CustomerProfile
имеет нулевое или большее отношение к таблице AccountAttribute
; то есть у меня будет коллекция AccountAttributes
в моем классе CustomerProfile
.
Как мне сопоставить таблицу CustomerProfile
с таблицей AccountAttribute
в моем отображении NHibernate, чтобы класс CustomerProfile
был гидратирован с правильным AccountAttributes
?
Таблица
Атрибут: Атрибут_Id (PK)
AccountAttribute:
AccountAttribute_Id (PK);
Attribute_Id (FK);
CustomerProfile_Id (FK)
CustomerProfile:
CustomerProfile_Id (PK)
Отображение для иерархии Attribute / AccountAttribute.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >
<class name="Attribute, CustomerProfile" lazy="false">
<id name="Identifier" column="Attribute_Id" access="field.camelcase">
<generator class="identity"/>
</id>
<joined-subclass name="AccountAttribute, CustomerProfile" table="AccountAttribute" lazy="false">
<key column="Attribute_Id" />
<property name="ValueText" column="Value_Txt" access="nosetter.camelcase" />
</joined-subclass>
</class>
</hibernate-mapping>
Сопоставление для объекта Account
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >
<class name="Account, CustomerProfile" lazy="false">
<id name="Identifier" column="Account_Id" access="field.camelcase">
<generator class="identity"/>
</id>
<!-- How do I map to the AccountAttributes table here to get the correct set? -->
<bag name="AccountAttributes" access="field.camelcase" table="AccountAttribute">
<key column="Account_Id" />
<one-to-many class="AccountAttribute, CustomerProfile"/>
</bag>
</class>
</hibernate-mapping>
Спасибо
Кайл