代码之家  ›  专栏  ›  技术社区  ›  adriaanp

包含对同一实体的2个引用的一个类的nHibernate映射

  •  1
  • adriaanp  · 技术社区  · 16 年前

    我有个人班,然后有家庭班,在那里我有财产父亲和财产母亲类型的人。

    我有一个个人数据库表和一个包含家庭ID、父亲ID、母亲ID的家庭表,其中父亲ID和母亲ID是个人表中个人ID的外键。

    你打算怎么在NHibernate绘制这个地图?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Lachlan Roche    16 年前

    此映射表示表。

    public class Family
    {
        public virtual int Id { get; set; }
        public virtual Person Mother { get; set; }
        public virtual Person Father { get; set; }
    }
    
    <class name="Family">
        <id name="Id" column="FamilyId">
            <generator class="native" />
        </id>
        <many-to-one name="Mother" column="MotherId" />
        <many-to-one name="Father" column="FatherId" />
    </class>
    
        2
  •  1
  •   Martin R-L    16 年前

    也许在给定的上下文中,您有充分的理由进行设计。

    从理论上讲,使用更松散耦合、更灵活、基于角色的设计通常会更好。

    我的意思是一个人是一个政党,父亲和母亲是一个人可以扮演的角色(一个政党的其他角色可能是雇员、顾客、朋友等等)。

    我个人喜欢PeterCoad的dnc模式,以解决这个特殊的设计问题。在这里可以找到一篇文章: http://edn.embarcadero.com/article/32543

    几年前,我在一个大型ERP系统上工作,在该系统中,我在C+nHibernate环境中引入了DNC,因此我知道它在实践中也能工作;-)

    要深入分析角色模式/原型,请看这本书。 Enterprise patterns and MDA: building better software with archetype patterns and UML .

    为了在语言层面上解决这个问题,还有一些正在进行的研究,而不是使用一种称为DCI的模式: http://www.artima.com/articles/dci_visionP.html