У меня есть таблица участника с полями
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 для другой таблицы, поэтому они представляют собой сопоставления "многие к одному".