Bei dieser Antwort handelt es sich um einen Vorschlag und nicht um eine genaue Antwort.
In der realen Welt ist dies kein korrektes Design, denn zunächst einmal hat jeder Ehepartner auch einen Ehepartner, der sich auf dieselbe Person bezieht, z. B. ist der Ehepartner des Ehepartners von Person selbst eine Person. Wir haben dies in unserer App als Persons und PeronRelations modelliert, PersonRelations haben FromPersonID, ToPersonID und Type Eigenschaft. Type spezifiziert "Husband<->Wife", "Wife<->Husband", "Father<->Son", "Son<->Father" usw.
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
}
Dies bietet Ihnen den Vorteil, dass Sie mehr Informationen pro Relation speichern und in beide Richtungen navigieren können, sowie viele Abfragen.
Jede Beziehung hat auch eine entsprechende Gegenbeziehung. Und Sie müssen eine zusätzliche Logik schreiben, um die richtige umgekehrte Beziehung zu erhalten, damit sie korrekt funktioniert.
Und dies ist in Entity Framework sehr einfach zu implementieren, da es sich um eine einfache One-to-Many-Beziehung handelt.