【发布时间】:2022-10-12 21:18:27
【问题描述】:
再会, 我有一个问题。我有三个域对象
public class User
{
public Guid Id { get; set; }
public string Username { get; set; }
public string EmailAddress { get; set; }
public string Password { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[NotMapped]
public List<string> Roles { get; set; }
//nav prop
public List<User_Role> UserRoles { get; set; }
}
public class User_Role
{
public Guid Id { get; set; }
public Guid UserId { get; set; }
//nav prop
public User User { get; set; }
public Guid RoleId { get; set; }
//nav prop
public Role Role { get; set; }
}
public class Role
{
public Guid Id { get; set; }
public string Name { get; set; }
public List<User_Role> UserRoles { get; set; }
}
我想从他们创建 DTO 对象
public class ReturnUserDto
{
public Guid Id { get; set; }
public string Username { get; set; }
public string EmailAddress { get; set; }
public string Password { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<string> Roles { get; set; }
}
我为它创建了一个控制器
[Route("api/[controller]")]
[ApiController]
public class UserController : ControllerBase
{
public readonly IUserRepository _userRepository;
public readonly IRoleRepository _roleRepository;
public readonly IUserRoleRepository _userRoleRepository
public UserController(IUserRepository userRepository, IRoleRepository IRoleRepository,
IUserRoleRepository userRoleRepository)
{
_userRepository = userRepository;
_roleRepository = IRoleRepository;
_userRoleRepository = userRoleRepository;
}
[HttpGet]
public async Task<IActionResult> GetAllUsersAsync()
{
var users = _userRepository.GetAllAsync();
var usersDto = users.ConvertToDto(unknow arguments)
}
}
我正在尝试通过使用静态 DtoConverstion 函数来实现它 看起来像这样
public static IEnumerable<ReturnUserDto> ConvertToDto(this IEnumerable<User> users,
IEnumerable<Role> Role)
{
var returnUserDto = (from user in users
select new ReturnUserDto
{
Id = user.Id,
Username = user.Username,
EmailAddress = user.EmailAddress,
Password = user.Password,
FirstName = user.FirstName,
LastName = user.LastName,
Roles = ?(Something like Role.name)
})
}
我如何实现它?我知道我需要使用 user_roles 从中获取特定用户的角色,然后将其添加到 DtoConvertion 函数。我只是不知道该怎么做。
【问题讨论】: