表达式 'u.Roles.AsQueryable().Select(r => r.Name)' 在 'Include' 操作中无效

The expression 'u.Roles.AsQueryable().Select(r => r.Name)' is invalid inside an 'Include' operation

我在尝试让用户使用他们的角色时遇到问题。我想要做的是让用户拥有相应的角色,但只有 roles: ["ADMIN", "USER"].

等角色的价值

这是我的代码:

public async Task<ActionResult<IEnumerable<User>>> GetAll()
{
        return await _context.User.Include(u => u.Roles.Select(r => r.Name)).ToListAsync();
}

Include 用于通过外键或导航属性从上下文中加载相关实体。 我认为您应该按以下方式重写您的查询:

_context
    .User
    .Select(user => new { user, rolesNames = user.Roles.Select(role => role.Name) }) 
    .ToListAsync()

角色将包含在 Select 查询中。 (有关更多详细信息,请参阅@Svyatoslav Danyliv 的评论)。