我们有一种情况,我们想要定义一个关系,其中一个类(名为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"
无济于事。我的问题是:
我们是否正确映射,如果没有,那么我们如何正确映射?
答案 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>
请注意,您需要表中的列来定义关系。