У меня есть таблица, которая ссылается на себя, но я изо всех сил пытаюсь получить желаемое отображение. Я хочу иметь возможность определить Детей как совокупность людей, у которых данный человек является Матерью, Отцом и/или Хранителем. Опекуном может быть отец или мать.
Я хочу иметь древовидное представление людей, которое можно просматривать, где перечислены люди; пользователь может развернуть узел человека, чтобы показать всех детей этого человека, независимо от отношения, определяющего ребенка (мать, отец или опекун).
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; }
}
Любая помощь будет оценена прямо сейчас, мой взгляд должен выглядеть так:
@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>