Ta odpowiedź jest sugestią zamiast dokładną odpowiedzią.
W realnym scenariuszu nie jest to poprawny projekt, przede wszystkim każdy współmałżonek ma również współmałżonka, który odnosi się do tej samej osoby, na przykład Oblubienica Małżonki Osoby jest samą Osobą. Modelujemy to w naszej aplikacji jako Osoby i PeronRelacje, PersonRelations mają właściwość FromPersonID, ToPersonID i Type. Typ określa "mąż < -> Wife", "żona < -> mąż", "Ojciec < -> Son", "Syn < -> Ojciec" itd
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
}
Daje to advantage jak można przechowywać więcej informacji na temat relacji i poruszanie się po nich w obu kierunkach wraz z wieloma zapytaniami.
Każda relacja ma również odpowiednią relację przeciwną. Będziesz musiał napisać dodatkową logikę, aby zachować właściwą odwrotną relację, aby działała poprawnie.
Jest to bardzo łatwe do wdrożenia w Entity Framework, ponieważ jest to prosta relacja One to Many.
Dzięki za pomoc Ladislav – Joao