這個答案是建議,而不是一個確切的答案。
在現實世界的情況下,這是不正確的設計,首先每個配偶都有配偶以及引用同一個人,例如,配偶的配偶配偶是Person本身。我們在我們的應用程序中將此模型設置爲Persons和PeronRelations,PersonRelations具有FromPersonID,ToPersonID和Type屬性。類型指定 「丈夫< - >妻子」, 「老婆< - >丈夫」, 「父親< - >兒子」, 「兒子< - >父」 等
public class Person{
public int PersonID {get;set;}
...
public ICollection<PersonRelations> FromRelations {get;set;}
public ICollection<PersonRelations> ToRelations {get;set;}
}
public class PersonRelations{
..
public int FromPersonID {get;set;}
public int ToPersonID {get;set;}
public RelationType Type {get;set;}
public Person FromPerson {get;set;}
public Person ToPersion {get;set;}
// useful for Employment and Marriage
// durations
public DateTime? Start {get;set;}
public DateTime? End {get;set;}
}
public enum RelationType{
Husband_Wife,
Wife_Husband,
Father_Son,
Son_Father,
Friend_Friend,
Employee_Employer,
Employer_Employee
}
這給你優勢,因爲你可以存儲更多關於每個關係的信息並在兩個方向上導航它們以及許多查詢。
每個關係都有相應的對立關係。你將不得不編寫額外的邏輯來保持正確的反向關係,以便它正常工作。
這在Entity Framework中很容易實現,因爲它是簡單的一對多關係。
感謝您的幫助Ladislav – Joao