NHibernate映射实体来自同一个表中的字段

时间:2009-04-20 02:27:21

标签: nhibernate

我有一个包含字段的会员表
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 个答案:

答案 0 :(得分:2)

我不确定这是否是您正在寻找的,但您可以尝试“组件”映射。这允许您在同一个表中使用嵌套类。

在google搜索“nhibernate组件” - 看来hibernate.org网站仍处于关闭状态(!),但您可以从google缓存中获取该页面的组件信息“第7章 - 组件映射。 “