NHibernate映射一个包含2个引用的类到同一个实体

时间:2010-03-02 20:52:35

标签: nhibernate nhibernate-mapping

我有一个人课,然后有一个家庭班,我有一个属性父亲和财产类型的母亲。

我有一个Person数据库表和一个包含FamilyId,FatherId,MotherId的Family表,其中FatherId和MotherId是PersonId in Person表的外键。

你将如何在NHibernate中映射它?

2 个答案:

答案 0 :(得分:2)

此映射表示您的表格。

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>

答案 1 :(得分:1)

也许你在给定的环境中有充分的理由进行设计。

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

我的意思是说一个人是一个“派对”,父亲和母亲是一个人可以玩的“角色”(“派对”的其他角色可能是员工,顾客,朋友等等)

我个人喜欢Peter Coad的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