Mam tabelę, która się odwołuje, ale mam problem z uzyskaniem pożądanego odwzorowania. Chcę móc zdefiniować Dzieci jako zbiór ludzi, którzy mają określoną osobę jako Matka, Ojciec i/lub Opiekun. Opiekun może być ojcem lub matką.Tabela samodzielnego odniesienia EF6 z wieloma właściwościami macierzystymi, pojedyncza kolekcja dla dzieci
Chcę mieć widok drzew osób, które można przeglądać w miejscach, w których znajdują się ludzie; użytkownik może rozwinąć węzeł osoby, aby pokazać wszystkie dzieci tej osoby, niezależnie od relacji określającej dziecko (matka, ojciec lub opiekun).
public partial class Person
{
[Key]
public int ID { get; set; }
[StringLength(100)]
public string Name { get; set; }
public int? GuardianID { get; set; }
[Column("MotherID")]
public int? MotherID { get; set; }
[Column("FatherID")]
public int? FatherID { get; set; }
[ForeignKey("MotherID")]
public virtual tblPerson Mother { get; set; }
[ForeignKey("FatherID")]
public virtual tblPerson Father { get; set; }
[ForeignKey("GuardianID")]
public virtual tblPerson Guardian { get; set; }
[InverseProperty("Guardian")]
[InverseProperty("Father")]
[InverseProperty("Mother")]
public virtual IEnumerable<tblPerson> children { get; set; }
}
Każda pomoc będzie mile widziane w tej chwili moim zdaniem ma wyglądać tak:
@using Person_MVC.Models
@model IEnumerable<Person>
@{
IEnumerable<Person> children;
}
<ul>
@foreach (Person person in Model.OrderBy(p => p.PersonNumber))
{
<li id="[email protected]" data-jstree='{"type":"Person"}' data-Personkey="@Person.ID.ToString()">
@Person.Name
@{
PersonModel db = new PersonModel();
children = (from p in db.Persons where p.GuardianID == Person.ID || p.Father == Person.ID || p.MotherID == Person.ID select p).ToList();
}
@if (children != null && children.Count() > 0)
{
@Html.Partial("PersonTree", children)
}
</li>
}
</ul>