2010-03-02 48 views
1

我有一個人類,然後有一個家庭課,我有一個屬性父親和一個屬性類型人的母親。NHibernate映射的一個類包含2個引用到同一個實體

我有一個Person和一個包含FamilyId,FatherId,MotherId的Family表的數據庫表,其中FatherId和MotherId是PersonId Person表中的外鍵。

你會如何去映射NHibernate的呢?

回答

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

也許你在給定的背景下有很好的設計理由。

從理論上講,您通常會選擇更鬆散耦合,靈活的基於角色的設計。

我的意思是說,一個人是一個「聚會」,而父親和母親是一個人可以扮演的「角色」(「派對」的其他角色可能是員工,客戶,朋友等等)。

我個人喜歡Peter Coad的DNC模式以解決這個特殊的設計問題。文章可以在這裏找到:http://edn.embarcadero.com/article/32543

幾年前,我曾在那裏我一個C#+ NHibernate的背景下出臺的DNC大型ERP系統上,所以我知道它在實踐中的作品,以及;-)

有關角色模式/原型的深入分析,請參閱書籍Enterprise patterns and MDA: building better software with archetype patterns and UML

還有爲了在語言層面來解決這個問題,而不是使用模式正在進行的研究,被稱爲DCI:http://www.artima.com/articles/dci_visionP.html

+0

@Martin感謝您的好消息,我們將對此進行調查 – adriaanp 2010-03-03 19:44:27

相關問題