ASP.NET MVC v5.2, Entity Framework v6.0 (코드 우선) 및 ID 2.0을 사용하여 웹 사이트를 구축하고 있습니다.ASP.NET ID 2.0 UserManager.FindByIdAsyc 반환하지 않는 역할
내 UserAdmin 컨트롤러에 다음 코드를 가지고 :
// GET: /UserAdmin/Details/5
public async Task<ActionResult> Details(string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var user = await UserManager.FindByIdAsync(id);
return View(user);
}
내 문제는 내가 UserManager와 사용자의 역할을 채울 수 있지만, 그것은 해당 사용자와 관련된 역할을 따기되지 않는 것입니다 FindByIdAsync 메서드를 사용합니다. 상기와 같은 사용자를 나타내는 디버그 정보 여기
되나 역할은 제로 카운트 : 여기서
두 역할에 할당 강조된 사용자에게 표시 IdentityUserRole 테이블 데이터이다
이 사용자의 역할이 반환되지 않는 이유는 무엇입니까?
편집 # 1
나는 UserManager의 기본 구현을 사용하고 있지 않다.
내 응용 프로그램 사용자가 IdentityUser를 확장하여 사용자 지정 속성을 추가 할 수있게합니다. 내 ApplicationDbContext는 IdentityDbContext를 확장합니다. 당신이 IdentityDbContext
및 IdentityUser
을 확장하고, 당신이 Logins
, Roles
및 UserRoles
등을 위해 관계를 정의 할 필요가 없습니다
modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
UserManager, UserStore 등의 기본 구현을 사용하고 있습니까? – Excommunicated
a) 여러분의'IdentityUserRole'에는'ApplicationUser_Id'와'IdentityRole_Id' 열이 있습니다. 그들은 거기 있으면 안된다. 이러한 열을 제거하려면 DbContext를 조정하십시오. b) DbContext에서 사용자를로드 할 때 특별히 역할을로드해야합니다 (예 : http://stackoverflow.com/a/26663667/809357 – trailmax
@Excommunicated 아니요, 내 ApplicationUser는 사용자 정의 속성으로 IdentityUser를 확장합니다. 내 ApplicationDBontext도 IdentityDbContext를 확장합니다. Fluent API를 통해 관계를 설정하고 있습니다. –
Dhaust