如何获得与关联组织的所有用户?

时间:2019-02-18 15:36:35

标签: asp.net-core asp.net-identity

我想弄清楚这个问题需要一周时间。我希望能得到社区的帮助。这是一个场景: 我有一个称为“公司”的实体类。一家公司拥有许多用户(一对多)

  public class User : IdentityUser<int>
    {
        public User()
        {
            Company = new Company();
        }
        public string FirstName { get; set; }
        public string LastName { get; set; }

        public DateTime CreatedDate { get; set; } = DateTime.Now;
        public virtual ICollection<UserRole> UserRoles { get; set; }

        public virtual Company Company { get; set; }
        public int CompanyId { get; set; }
    }

我也有这样的公司实体。

    public class Company 
{
    public Company()
    {
        Users = new List<User>();
    }
    public int CompanyId { get; set; }

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "Company Name")]
    public string CompanyName { get; set; }
    public virtual List<User> Users { get; set; }
}

现在,我可以添加新公司,但不能添加用户。

这是我的控制器/创建

    [HttpGet]
    public IActionResult Create(int companyId)
    {
        ViewData["UserList"] = new SelectList(_context.Companies, "CompanyId", "CompanyName", companyId);
        return View();
    }
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create(RegisterViewModel viewModel)
    {
        if (ModelState.IsValid)
        {
            var user = await _userManager.FindByEmailAsync(viewModel.UserName);

            if (user == null)
            {
                user = new User
                {
                    UserName = viewModel.UserName,
                    FirstName = viewModel.FirstName,
                    LastName = viewModel.LastName,
                    Email = viewModel.UserName,
                    PhoneNumber = viewModel.PhoneNumber
                };

                var result = await _userManager.CreateAsync(user, viewModel.Password);

                if (result.Succeeded)
                {
                    RedirectToAction(nameof(Index));
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }
                    return View();
                }
            }
            return View("Success");

        }
        ViewData["CompanyId"] = new SelectList(_context.Companies, "Id", "Id", viewModel.CompanyId);
        return View();
    }

当我运行程序并在POST /表单中输入数据时,

       if (ModelState.IsValid)
        {

Model.IsValid始终返回false。并且它要求输入我不想要的公司信息,因为我已经有了公司数据。我所有人都想做的是将外部ID与用户链接。

由于Identity已经内置了

之类的功能
 var users = await _userManager.GetUserAsync(viewModel.UserName);

我还如何查询GetUserAsync方法中的Include?

0 个答案:

没有答案