将表的主键映射到Nhibernate中的同一个表

将表的主键映射到Nhibernate中的同一个表,nhibernate,nhibernate-mapping,visual-studio-2013,Nhibernate,Nhibernate Mapping,Visual Studio 2013,我有一个表名SchoolStructure,其中主键是“ID”,另一个表名是“ParentStructureEntityID”,它存储同一个表的主键。 此表的目的是创建树结构。在此期间,父项的id将存储在此“ParentStructureEntityID”中。我是NHibernate的初学者。 如何在.hbm.xml文件中映射这两个字段 请帮我解决这个问题。…您的xml映射将如下所示: <?xml version="1.0" encoding="utf-8" ?> <hiber

我有一个表名SchoolStructure,其中主键是“ID”,另一个表名是“ParentStructureEntityID”,它存储同一个表的主键。 此表的目的是创建树结构。在此期间,父项的id将存储在此“ParentStructureEntityID”中。我是NHibernate的初学者。 如何在.hbm.xml文件中映射这两个字段


请帮我解决这个问题。…

您的xml映射将如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

  <class name="SchoolStructure" table="SchoolStructure">
    <id name="ID">
      <column name="ID"/>
      <generator class="native" />
    </id>
    <many-to-one name="ParentStructure" column="ParentStructureEntityID" />
  </class>
</hibernate-mapping>

这当然是一开始。理想情况下,应该以适当的方式重写GetHashCode和Equals。最后,我谦虚地建议使用代码映射而不是xml映射。祝你好运

在类中,我们应该声明属性“ParentStructureEntityID”还是上面提到的行就足够了?不需要显式ID列。如果你想,你可以做,但除非你真的需要,我说不要。总而言之,上述代码足以使其工作。
public class SchoolStructure
{
    public virtual int ID {get; private set;}
    public virtual SchoolStructure ParentStructure {  get; set;}
}