Visual Studio 2013 (MSDN 2013-10-18에서 다운로드)의 릴리스 버전 (RCM이 아닌 RTM)을 사용하므로 최신 (RTM) 버전의 AspNet.Identity를 사용하고 있습니다. 새 웹 프로젝트를 만들 때 인증을 위해 "개별 사용자 계정"을 선택합니다. 다음과 같은 테이블이 생성됩니다.
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
새 사용자를 등록하면 (기본 템플릿 사용)이 테이블 (위에 나열된)이 생성되고 AspNetUsers 테이블에 다음을 포함하는 레코드가 삽입됩니다.
- 신분증
- 사용자 이름
- 비밀번호 해시
- 보안 스탬프
- 차별
또한 "ApplicationUser"클래스에 공용 속성을 추가하여 "FirstName", "LastName", "PhoneNumber"등과 같은 추가 필드를 AspNetUsers 테이블에 추가했습니다.
여기 내 질문이 있습니다. 위의 테이블 이름을 변경하는 방법이 있습니까 (처음 생성 될 때) 또는 AspNet
위에 나열된 접두어로 이름이 지정 됩니까? 테이블 이름을 다르게 지정할 수있는 경우 방법을 설명하십시오.
-업데이트-
@Hao Kung의 솔루션을 구현했습니다. 새 테이블 (예 : MyUsers)을 만들지 만 여전히 AspNetUsers 테이블을 만듭니다. 목표는 "AspNetUsers"테이블을 "MyUsers"테이블로 바꾸는 것입니다. 아래 코드와 작성된 테이블의 데이터베이스 이미지를 참조하십시오.
실제로 각 AspNet
테이블을 내 자신의 이름 으로 바꾸고 싶습니다 ... fxample, MyRoles, MyUserClaims, MyUserLogins, MyUserRoles 및 MyUsers.
이 작업을 수행하고 하나의 테이블 세트 만 사용하는 방법은 무엇입니까?
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string PostalCode { get; set; }
public string PhonePrimary { get; set; }
public string PhoneSecondary { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(): base("DefaultConnection")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers");
}
}
-답변 업데이트-
Hao Kung과 Peter Stulinski에게 감사합니다. 이것은 내 문제를 해결했다 ...
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
modelBuilder.Entity<ApplicationUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
modelBuilder.Entity<IdentityUserRole>().ToTable("MyUserRoles");
modelBuilder.Entity<IdentityUserLogin>().ToTable("MyUserLogins");
modelBuilder.Entity<IdentityUserClaim>().ToTable("MyUserClaims");
modelBuilder.Entity<IdentityRole>().ToTable("MyRoles");
}
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
에서 언급 한대로 포함 된 행을 제거하려면 답변을 업데이트해야합니다 . 그렇지 않으면 MyUsers
@Daskul이 지적한대로 새로 명명 된 테이블에 구분자 열이 있습니다. 또한 MyUserClaims
@Matt Overall이 지적한 것처럼 테이블 구조가 잘못되었습니다. 나는 그것이 msdn 블로그의 @Giang에 대한 의견에서 나온 아이디어를 추가한다고 생각 하지만 잘못되었습니다!