Nhibernate一对一地映射一个类本身

时间:2009-03-12 17:23:28

标签: c# nhibernate nhibernate-mapping

我们有一种情况,我们想要定义一个关系,其中一个类(名为Module)可能与也可能不与作为其前身的Module对象相关。可以有零个或没有前辈。该课程如下:

public class Module
{
    public int Id
    {
        get;
        set;
    }

    // other stuff here

    public Module Predecessor
    {
        get;
        set;
    }
}

我们已经定义了映射,因此Predecessor是Module类型的属性,如下所示:

<class name="Module">
    <Id name="Id">
        <generator class="native/>
    </Id
    <property name="Predecessor" type="Module" "unique="true"/>
<class>

然而,由于无法找到“模块”类型,我们得到关于映射无法编译的投诉。我们尝试了班级的长名称

type="STC.EI.JobSubmissionSystem.Data.Domain"

以及该类的完全限定名称

type="STC.EI.JobSubmissionSystem.Data.Domain, STC.EI.JobSubmissionSystem.Data"

无济于事。我的问题是:

我们是否正确映射,如果没有,那么我们如何正确映射?

1 个答案:

答案 0 :(得分:2)

您可以使用many-to-one元素:

<class name="Module">
    <Id name="Id">
        <generator class="native"/>
    </Id>
    <many-to-one name="Predecessor" class="Module" column="predecessor_id" />
<class>

请注意,您需要表中的列来定义关系。