如何查询多级

时间:2019-06-24 10:49:37

标签: c# asp.net-mvc

我正在使律师简单的应用程序来计算代理人佣金 我们有两类代理商

  1. 第一代理人-将新客户带到律师事务所
  2. 第二个代理商-谁也带来代理商并获得佣金

我正在使用asp.net身份,这是创建这种关系的最佳实践,该关系是将应用程序用户类型的名为Parent的文件添加为应用程序用户类中的集合

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);
        }

我希望以父项的身份查询上面的绕过Agent的新查询,然后我可以将子项列入列表

1 个答案:

答案 0 :(得分:0)

如果您希望所有用户都具有相同的父级,请尝试:

var usersWithParent = _context.Users.Where(u => u.Parents.Any(p => p.Id == myParentId)).ToList();

此外,请参阅我有关立即加载所有收藏集的评论。