C# Nhibernate一对一地将类与自身映射

C# Nhibernate一对一地将类与自身映射,c#,nhibernate,nhibernate-mapping,C#,Nhibernate,Nhibernate Mapping,在这种情况下,我们需要定义一个关系,其中一个类(命名模块)可能与它的前身模块对象相关,也可能与之无关。可以没有前导,也可以没有前导。该类如下所示: public class Module { public int Id { get; set; } // other stuff here public Module Predecessor { get; set; } } 我

在这种情况下,我们需要定义一个关系,其中一个类(命名模块)可能与它的前身模块对象相关,也可能与之无关。可以没有前导,也可以没有前导。该类如下所示:

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

    // other stuff here

    public Module Predecessor
    {
        get;
        set;
    }
}
我们已经定义了我们的映射,因此Preference是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, STC.EI.JobSubmissionSystem.Data"
无济于事。我的问题是:

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

您可以使用元素:



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

这是正确的。我只想补充一点,它不编译的原因是您不能在“type”属性中指定域类;您必须使用一个支持“class”属性的元素(如多对一)。@darin-Ahh,感谢您提供的信息,这个解决方案很有效@斯图尔特-有用的提示,谢谢!我们遇到了很多错误,它无法找到具有原始映射的类型
type="STC.EI.JobSubmissionSystem.Data.Domain, STC.EI.JobSubmissionSystem.Data"
<class name="Module">
    <Id name="Id">
        <generator class="native"/>
    </Id>
    <many-to-one name="Predecessor" class="Module" column="predecessor_id" />
<class>