我有一个通用界面:
public interface IValidationResult<T> where T : struct {
T Status { set; get; }
User User { set; get; }
}
Run Code Online (Sandbox Code Playgroud)
以及一个实现通用接口的类:
public class ValidationResult : IValidationResult<ValidationResult.ValidationStatus> {
public enum ValidationStatus { UserNotFound, InvalidPassword, Valid, UserBlankOrSpace }
public ValidationStatus Status { set; get; }
public User User { set; get; }
public ValidationResult (User user, ValidationStatus status) {
if (user == null) {
throw new ArgumentNullException ("The User is Null");
}
Status = status;
User = user;
}
} …Run Code Online (Sandbox Code Playgroud) 嗨,我正在使用Identity与自定义用户类和EF Core构建API.我想获取属于用户的角色的名称.表的图表如下(忽略userclaims和userlogins):

正如您所看到的,角色和用户是N到N,因此内部Identity创建了一个名为UserRoles的联结表,我的控制器如下所示:
Route ("api/[controller]")]
public class UserController : Controller {
private readonly DBContext _db;
private readonly UserManager<Usuario> _userManager;
public UserController (DBContext db, UserManager<Usuario> userManager) {
this._db = db;
}
[HttpGet ("GetUserById/{id}", Name = "GetUserById")]
public async Task<IActionResult> GetUserById (string id) {
try {
var user = await this._db.Users.Where (x => x.Id == id).Include (x => x.Roles).FirstOrDefaultAsync ();
if (user == null) {
return NotFound ();
}
return Ok (user);
} catch (Exception e) {
Console.WriteLine (e.Message);
return BadRequest (); …Run Code Online (Sandbox Code Playgroud)