내 환경 :
개인 사용자 계정으로 스캐 폴딩 된 프로젝트가 선택되었습니다. 내가 (IdentityModel.cs에서 생성됩니다 아니 ApplicationDbContext) 내 PrimaryApplicationContext
protected override void Seed(MYProject.DAL.PrimaryApplicationContext context)
{
ApplicationDbContext userContext = new ApplicationDbContext();
var rm = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(userContext));
var um = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(userContext));
if (!rm.RoleExists("Developer"))
{
var idResult = rm.Create(new IdentityRole("Developer"));
}
if (um.FindByName("Super") == null)
{
um.Create(new ApplicationUser() { UserName = "Super" } , "Password");
ApplicationUser user = um.FindByName("Super");
um.AddToRole(user.Id, "Developer");
}
}
경우에는 다음과 같이
내 종자 방법은 외모 코드 - 우선 마이그레이션을 가능 1.0 ASP.net MVC5, ID를 사용한다 응용 프로그램에서 응용 프로그램 데이터와 동일한 컨텍스트를 사용하여 사용자 데이터를 저장하면 새 ApplicationDbContext를 만들 필요가 없으므로 seed 메서드에 전달 된 컨텍스트를 사용할 수 있습니다.
1 단계 - ID 데이터를 저장하는 데 사용되는 컨텍스트 중 하나의 인스턴스를 만듭니다.
2 단계 RoleManager의 인스턴스를 만들고 1 단계 컨텍스트로 UserManager를 만듭니다. 당신은 "역할 관리자는 사용할 수 없습니다"와 같은 오류가 발생하면 *, 당신은 노드 아래, 당신의 Web.config에
<roleManager enabled="true" />
를 추가해야합니다.
3 단계 - 역할 관리자를 사용하여 역할이 이미 존재하는지 확인합니다 (작성하지 않은 경우).
4 단계 사용자 관리자를 사용하여 사용자가 이미 존재하는지 확인합니다 (작성하지 않은 경우).
5 단계 일단 역할과 사용자가 생성되면 데이터베이스에서 사용자를 검색하십시오 (역할에 추가하려면 사용자 ID가 필요합니다). * 사용자와 역할 관리자가 메소드를 작성하면이를 인식하십시오. 신원 결과 개체가 아닌 역할/사용자 개체, 그래서 다음 코드는
var result = usermanager.Create(new ApplicationUser()...
usermanager.AddToRole(result.Id, "Developer");
단계 6 역할에 검색된 사용자를 추가 할 수 UserManager를 사용하여 유효하지 않습니다. 7 - 패키지 - 관리자 - 콘솔에 Update-Database 명령을 실행하여 데이터베이스를 다시 시드하십시오.
처음에 "TestRole"을 만드시겠습니까? –
내가 볼 수있는 유일한 솔루션은 AutoDetectChangesEnabled = true 인 UserManager에 대한 별도의 DbContext를 만드는 것입니다. – Vindberg