NHibernate Mapping Entity из полей в той же таблице - PullRequest
1 голос
/ 20 апреля 2009

У меня есть таблица участника с полями
MemID - первичный ключ
BUSINESS_NAME находится
Business_Address
Business_Phone

Мне нужно создать класс работодателя, свойства которого взяты из той же таблицы членов.
EmployerName
EmployerAddress
EmployerPhone

Вот мое отображение работодателя

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
<class name="Employer, Entities" lazy="true" table="Members" dynamic-update="true">
        <id name="MemberID" column="MemID" type="Int64">
            <generator class="native" />
        </id>
        <many-to-one name="EmployerAddress" column="Business_Address" class="Address, Entities" lazy="proxy" />
        <many-to-one name="EmployerPhone" column="Business_Phone" class="Phone, Entities" lazy="proxy"/>
        <property name="EmployerName" column="Business_Name" not-null="false" />
    </class>
</hibernate-mapping>

Я подумал, что могу сопоставить класс Members следующим образом, но получаю «System.Collections.Generic.KeyNotFoundException: указанный ключ отсутствует в словаре».

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
<class name="Member, Entities" lazy="true" table="Members" dynamic-update="true">
<id name="MemberID" column="MemID" type="Int64">
<generator class="native" />
</id>
<one-to-one name="EmployerInformation" class="Employer, Entities"  lazy="false"/>
    </class>
</hibernate-mapping>

Также обратите внимание. Я не могу переместить бизнес-информацию в другую таблицу из-за ограничений в текущей системе. Business_Address и Business_Phone - это FK для другой таблицы, поэтому они представляют собой сопоставления "многие к одному".

1 Ответ

2 голосов
/ 20 апреля 2009

Я не уверен, что это то, что вы ищете, но вы можете попробовать "компонентное" сопоставление. Это позволяет вам иметь вложенный класс в одной таблице.

Поищите в Google «компонент nhibernate» - кажется, что сайт hibernate.org все еще не работает (!), Но вы можете получить информацию о компонентах из кэша Google для страницы «Глава 7 - Сопоставление компонентов». «

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...