2012-12-19 73 views
3

我正在使用.NET MVC 4構建網站。我擁有的是與其他人有角色的人。例如,A是B的父親,D和A是C的丈夫。通過.NET MVC 4中的第三個實體關聯兩個實體4

我不確定這是否是正確的方式,但我正在考慮讓班級人員和班級角色。不知何故,我想通過一個角色實例連接Persons的一個實例與Persons的另一個實例,並將其保存到數據庫中。

所以關聯表必須有三列Person1 | Role | Person2。

我該如何最好地在模型中表示這一點?

編輯

感謝您的幫助。我做了和你所提議的非常相似的東西。

public class Persons 
{ 
    public Guid PersonsID { get; set; } 
    public string Name { get; set; } 
    ICollection<Relations> Relations { get; set; } 

} 

public class RelationshipType 
{ 
    public Guid ID {get; set;} 
    public string Type { get; set; } 
    public ICollection<Relations> Relations { get; set; } 

} 

public class Relations 
{ 
    public Guid RelationsID { get; set; } 
    public virtual Persons RealtedPerson { get; set; } 
    public virtual RelationshipType RelationType { get; set; } 
    public virtual Persons RealtedTo { get; set; } 
} 

這給了三個表所在的表關係有向人2個foreing鍵和走向的RelationshipType一個外鍵。如果我移除一個人,包括此人在內的關係也可能會被移除,否則不會。

最後一個問題。你爲什麼選擇一個枚舉而不是一個類導致一個表?

再次感謝您的幫助。

回答

2

你應該做這樣的事情,然後

class Person{ 
    string Id{ get; set; } 
    string Name{ get; set; } 
    ... 
    List<Relation> relations{ get; set; } 

} 

class Relation 
{ 
    string id{ get; set; } 
    Person relatedPerson{ get; set; } 
    RelationType relationType { get; set; } 
    Person relatedto { get; set; } 
} 

enum RelationType{ 
    Husband, 
    Father, 
    Child, 
    ... 
} 
+0

爲輸入感謝。我想過,但它似乎不是最好的解決方案,因爲如果我想在未來創建添加一種新的關係將會有問題,我將不得不改變模式。無論哪種方式,整個問題的關鍵是要找出如何在代碼中最好地表示這種類型的關聯表。 – idipous

+0

@idipous看到我的編輯 – Kimtho6