C# NHibernate同一类的多对多

C# NHibernate同一类的多对多,c#,nhibernate,orm,many-to-many,nhibernate-mapping,C#,Nhibernate,Orm,Many To Many,Nhibernate Mapping,如果之前已经回答过,请道歉。我试过谷歌,但找不到答案 现在我有一节课 public class User { public virtual string Username { get; set; } public virtual string Name { get; set; } public virtual ISet<User> Teamleaders { get; set;} public virtual ISet<User> Sta

如果之前已经回答过,请道歉。我试过谷歌,但找不到答案

现在我有一节课

public class User
{
    public virtual string Username { get; set; }
    public virtual string Name { get; set; }

    public virtual ISet<User> Teamleaders { get; set;}
    public virtual ISet<User> Staff { get; set;}
}
公共类用户
{
公共虚拟字符串用户名{get;set;}
公共虚拟字符串名称{get;set;}
公共虚拟ISet团队领导{get;set;}
公共虚拟ISet工作人员{get;set;}
}
teamLeaders存储此用户拥有的所有teamLeaders。 staff存储团队领导拥有的所有员工

这是一种多对多的关系

目前我的XML文件如下所示

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
               assembly="SDReward"
               namespace="SDReward.Domain">
  <class name="User">
    <id name="Username" />
    <property name="Name" />

  </class>
</hibernate-mapping>

我已经得到它与以下数据一起工作。它从teamleaderstaff表中获取数据

<set name="Teamleaders" table="teamleaderstaff">
  <key column="TeamleaderId" />
  <many-to-many column="UserId" class="User" />
</set>

<set name="Staff" table="teamleaderstaff">
  <key column="UserId" />
  <many-to-many column="TeamleaderId" class="User" />
</set>


但当我插入时,它会将它们插入到数据库中。。。例如,如果我向一个用户添加一个团队负责人,并将该用户添加为团队负责人的职员,则会使用相同的数据进行两次插入。

在您的案例中,多对多的映射可能如下所示

<set name="Teamleaders" table="teamleaderstaff" lazy="true">
  <key column="UserId"/>
  <many-to-many class="User" column="TeamleaderId"/>
</set>


<set name="Staff" table="teamleaderstaff" lazy="true" inverse="true" >
  <key column="TeamleaderId"/>
  <many-to-many class="User" column="UserId"/>
</set>


1) 不同之处在于
谢谢。我不知道我怎么没有意识到相反的事情。。。有没有什么经验法则(一般来说)让哪一方使用倒数法?在多对多的情况下,这主要取决于你。在自引用实体的情况下更是如此……;)