Asp.net 신원 확인 오류
IdentityContext를 mydbcontext와 통합하고 싶지만이 오류가 발생합니다.
모델 생성 중에 하나 이상의 유효성 검사 오류가 감지되었습니다.
Ivdb.Dal.Concrete.EFCodeFirst.IdentityUserLogin : : EntityType 'IdentityUserLogin'에 정의 된 키가 없습니다. 이 EntityType에 대한 키를 정의하십시오. Ivdb.Dal.Concrete.EFCodeFirst.IdentityUserRole : : EntityType 'IdentityUserRole'에 정의 된 키가 없습니다. 이 EntityType에 대한 키를 정의하십시오. IdentityUserLogins : EntityType : EntitySet 'IdentityUserLogins'는 정의 된 키가없는 'IdentityUserLogin'유형을 기반으로합니다. IdentityUserRoles : EntityType : EntitySet 'IdentityUserRoles'는 정의 된 키가없는 'IdentityUserRole'유형을 기반으로합니다.
어떻게 해결할 수 있습니까?
암호:
public partial class ivdbDb156978Context : IdentityDbContext<ApplicationUser>
{
static ivdbDb156978Context()
{
Database.SetInitializer<ivdbDb156978Context>(null);
}
public ivdbDb156978Context()
: base("Name=ivdbContext")
{
}
public DbSet<Car> Cars { get; set; }
응용 프로그램 사용자
public class ApplicationUser : IdentityUser
{
}
귀하의 코드는 이것을 표시하지 않지만 오류가 발생하면 OnModelCreating을 재정의한다고 가정 IdentityDbContext<ApplicationUser>
합니다. 여기서 엔티티 프레임 워크 매핑을 구성합니다. 즉, OnModelCreating을 재정의하려면 base를 호출하거나 직접 매핑을 수행해야합니다.
그래서 이것은 :
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// your stuff here
}
또는 매핑을 수행합니다.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
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 });
}
base.OnModelCreating을 호출하지 않고 고유 한 매핑을 수행하려는 경우 매핑은 다음과 같아야합니다.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id).Property(p => p.Name).IsRequired();
modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
modelBuilder.Entity<IdentityUserLogin>().HasKey(u => new {u.UserId, u.LoginProvider, u.ProviderKey});
}
UserId에만 IdentityUserLogin에 대한 키를 입력하면 기본 Google 로그인을 사용할 때 DbEntityValidationExceptions가 발생합니다.
요점은 빈 OnModelCreating을 가질 수 없다는 것입니다.
좋은
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// your stuff here
}
나쁜
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// base.OnModelCreating(modelBuilder);
// your stuff here
}
참고 URL : https://stackoverflow.com/questions/19994590/asp-net-identity-validation-error
'IT박스' 카테고리의 다른 글
symfony2 및 doctrine을 사용하여 기존 데이터베이스에서 단일 엔티티 생성 (0) | 2020.12.14 |
---|---|
UICollectionView 가로 페이징 스크롤 뷰에서 누락 된 논리 정렬 (0) | 2020.12.14 |
Spring Security에 대한 로깅을 어떻게 활성화합니까? (0) | 2020.12.14 |
Git 오류 치명적 : 인증 실패 (0) | 2020.12.14 |
HTML 양식에서 텍스트 영역의 값을 어떻게 "미리 채울"수 있습니까? (0) | 2020.12.14 |