Название довольно понятно. Когда я создаю нового пользователя, он должен добавить пользователя к роли. Мой код работает, но это выглядит некрасиво. Есть ли лучший способ сделать это с помощью одного _context.SaveChangesAsync()
звонка?
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string Phone { get; set; }
public List<UserRole> UserRoles { get; set; }
public List<Bot> Bots { get; set; }
}
public class Role
{
public int Id { get; set; }
public string Name { get; set; }
public List<UserRole> UserRoles { get; set; }
}
public class UserRole
{
public int UserId { get; set; }
public User User { get; set; }
public int RoleId { get; set; }
public Role Role { get; set; }
}
[AllowAnonymous]
[HttpPost]
public async Task<ActionResult> CreateUserAsync([FromBody] UserRegisterDto userRegisterDto)
{
var user = new User
{
FirstName = userRegisterDto.FirstName,
MiddleName = userRegisterDto.MiddleName,
LastName = userRegisterDto.LastName,
Email = userRegisterDto.Email,
Password = userRegisterDto.Password,
Phone = userRegisterDto.Phone
};
await _context.Users.AddAsync(user);
await _context.SaveChangesAsync();
// Note code here
var user2 = await _context.Users
.Include(e => e.UserRoles)
.ThenInclude(e => e.Role)
.SingleOrDefaultAsync(e => e.Id == user.Id);
user2.UserRoles.Add(new UserRole { RoleId = userRegisterDto.RoleId });
_context.Users.Update(user2);
await _context.SaveChangesAsync();
return Ok(new { Message = "Successfully registered." });
}