映射与NHibernate的自反多对多关系?
我正在尝试将NHibernate与现有数据库一起使用。数据库记录用户之间的单向关系:映射与NHibernate的自反多对多关系?,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我正在尝试将NHibernate与现有数据库一起使用。数据库记录用户之间的单向关系: Users UserId PK Name Relationships RelationshipId PK ParentId FK:Users_UserId ChildId FK:Users_UserId 我想用NHibernate来表示这一点。目前,我有以下POCO对象: class U
Users
UserId PK
Name
Relationships
RelationshipId PK
ParentId FK:Users_UserId
ChildId FK:Users_UserId
我想用NHibernate来表示这一点。目前,我有以下POCO对象:
class User {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public ICollection<User> ParentUsers {get; set;}
public ICollection<User> ChildUsers {get; set;}
}
类用户{
公共虚拟整数Id{get;set;}
公共虚拟字符串名称{get;set;}
公共ICollection ParentUsers{get;set;}
公共ICollection子用户{get;set;}
}
我还有这个映射文件:
<class name="User" table="Users">
<id name="Id"></id>
<property name="Name"></property>
</class>
我已经看过网上的指南,但我无法确定需要在映射文件中放入什么来连接我的两个ICollection
属性
我应该如何映射此数据结构?我当前的方法正确吗,还是创建第二个POCO类,然后只使用两个
多对一关系更好?我可能遗漏了一些东西,但这应该让您开始:
<idbag name="ParentUsers" table="Relationships">
<collection-id column="RelationshipId" type="...">
<generator class="..."/>
</collection-id>
<key column="ChildId"/>
<many-to-many column="ParentId" class="User"/>
</idbag>
<idbag name="ChildUsers" table="Relationships">
<collection-id column="RelationshipId" type="...">
<generator class="..."/>
</collection-id>
<key column="ParentId"/>
<many-to-many column="ChildId" class="User"/>
</idbag>
另外,其中一个集合应标记为反向
,非常感谢,这很好。很难找到在web上映射定义的具体例子。