Я делаю юрист простое приложение для расчета комиссионных агентов
у нас есть две категории агентов
- первый агент - кто привел новых клиентов в адвокатскую контору
- второй агент - кто тоже приносит агента и получает комиссию
Я использую идентичность asp.net, лучшую практику для создания этого отношения к добавлению поля с именем Parent с типом Application user в качестве коллекции в классе пользователя приложения
public virtual ICollection<ApplicationUser> Parent { get; set; }
затем создайте отношения.
modelBuilder.Entity<ApplicationUser>()
.HasMany(u => u.Parent)
.WithMany()
.Map(m =>
{
m.MapLeftKey("Id");
m.MapRightKey("ParentId");
m.ToTable("User_Parent");
});
теперь я могу получить родителя агента, но я пытался получить ребенка от родителя, но не смог найти наилучшую практику для этого
public ActionResult ViewAgent(string Id)
{
//Get selected agent with related data
var Agent = _context.Users.Single(c => c.Id == Id);
_context.Entry(user).Collection(u => u.Clients).Load();
_context.Entry(user).Collection(u => u.Parent).Load();
foreach (var item in user.Clients)
{
_context.Entry(item).Collection(c => c.Case).Load();
foreach (var charge in item.Case)
{
_context.Entry(charge).Collection(c => c.CaseCharge).Load();
}
}
//select agent Child's of agent with related data
// How can i query it ?? an error here but i am looking around
var childs= _context.Users.Where(u=>u.Parent.Select(p=>p.Id==Id))
return View(user);
}
Я ожидал запросить обходного агента выше для нового запроса в качестве родительского, после чего я смогу получить ребенка в списке