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