您好我正在建立一個使用身份與自定義用戶類和EF核心的API。 我想獲得屬於用戶的角色的名稱。 表的圖是下面的(忽略userclaims和userlogins): ASP.Net核心如何獲得EF核心和身份的用戶角色
正如你可以看到角色和用戶是N到N使內部身份做了一個結表命名的UserRole,我的位指示如下:
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();
}
}
當我在郵差把它稱爲我得到如下回應:
正如你可以在R見我所得到的所有部分是:
"roles": [
{
"userId": "d88b0c2d-25c5-4da9-ad05-45f69dec67ff",
"roleId": "a83a60ca-f011-43ce-be3d-8b71403aa86e"
}
]
該數據屬於聯結表而不是角色表本身,我不希望這樣。
我真正想要的是「真正的」角色表數據,任何想法我怎麼能做到這一點?
在SQL它會是這樣的:
select *
from AspNetUsers as a,AspNetUserRoles as b,AspNetRoles as c
where a.Id = b.UserId and b.RoleId= c.Id