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