当前位置:  开发笔记 > 编程语言 > 正文

当自连接关系具有其他属性时,NHibernate映射

如何解决《当自连接关系具有其他属性时,NHibernate映射》经验,为你挑选了0个好方法。

当该关系具有属性本身时,如何将类映射到同一类的其他实例?

我有一个名为Person的类,它被映射到表Person

PersonID   PersonName    PersonAge 
----------------------------------
       1   Dave Dee             55
       2   Dozy                 52
       3   Beaky                45
       4   Mick                 55
       5   Tich                 58

我希望使用名为PersonPerson的连接表在Person和Person之间建立多对多关系:

 PersonPersonID  PersonID  RelatedPersonID RelationshipID 
 --------------------------------------------------------
              1         1                5              1
              2         3                4              2
              3         2                1              3

我想在PersonPerson表中使用以下属性:

RelationshipID  RelationshipName
--------------------------------
             1  Colleague
             2  Manager
             3  Tutor

这个问题和Billy McCafferty的链接帖子解释了由于PersonPerson表中的其他列,PersonPerson关系必须从正常的JOIN升级到实体本身.但是它没有解释什么时候它是自我加入.不同的是,如果我向Dave Dee(ID = 1)询问所有相关人员,我不仅应该得到Tich(ID = 5),而且我也应该得到Dozy(ID = 2),因为Dave Dee也在RelatedPersonID列中.

到目前为止,我的解决方案是在Person类中有两个属性.

public virtual IList PersonPersonForward {get;set;}
public virtual IList PersonPersonBack {get;set;}

private List personPersonAll;
public virtual List PersonPersonAll 
{
   get
   {
       personPersonAll = new List(PersonPersonForward);
       personPersonAll.AddRange(PersonPersonBack);
       return personPersonAll;
   }
}

并在hbm中有以下内容:

 
      
      
 

 
      
      
 

这看起来有点笨拙而且不够优雅.NHibernate通常为大多数日常问题提供优雅的解决方案.上述是明智的做法还是有更好的方法?

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有