Как получить всех пользователей с ассоциированной организацией? - PullRequest
0 голосов
/ 18 февраля 2019

Неделю, я пытаюсь это выяснить.Я надеюсь получить помощь от сообщества.Вот сценарий: у меня есть класс сущности под названием «Компания».Одна компания имеет много пользователей (один-ко-многим)

  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всегда возвращать ложьи он просит ввести информацию о компании, которая мне не нужна, потому что у меня уже есть данные о компании.Все, что я пытался сделать, это связать Foreign Id с пользователем.

Так как Identity уже имеет встроенную функцию, такую ​​как

 var users = await _userManager.GetUserAsync(viewModel.UserName);

Как мне также сделать запрос, например, Включить в метод GetUserAsync?

...