역할 및 사용자 지정 필드가있는 2 명의 사용자를 추가하는 데이터베이스를 시드하는 클래스가 있습니다. 내가 가진 문제는 [dbo]. [IdentityUsers] 대신 [dbo]. [AspNetUsers]에 데이터를 저장한다는 것입니다. 두 테이블이 모두 생성됩니다. 시드 할 때 데이터는 AspNetUser로 이동합니다. 웹 사이트를 시작하고 새 사용자를 등록하면 데이터가 IdentityUser로 이동합니다.Identity를 사용하여 Entity Framework 시드 (Microsoft.Owin.Security)
다음internal sealed class Configuration : DbMigrationsConfiguration<DatabaseContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(DatabaseContext context)
{
base.Seed(context);
var userStore = new UserStore<ApplicationUser>();
var manager = new UserManager<ApplicationUser>(userStore);
var role = new IdentityUserRole { Role = new IdentityRole(Model.Roles.ADMINISTRATOR) };
var user = new ApplicationUser() { UserName = "123123", Email = "[email protected]", Language = "en-US"};
user.Roles.Add(role);
IdentityResult result = manager.Create(user, "123123");
var role2 = new IdentityUserRole { Role = new IdentityRole(Model.Roles.NORMAL) };
var user2 = new ApplicationUser() { UserName = "qweqwe", Email = "[email protected]", Language = "fr-CA" };
user.Roles.Add(role2);
IdentityResult result2 = manager.Create(user2, "qweqwe");
}
}
이 신원 모델에 대한 사용자 정의 필드를 정의하는 ApplicationUser 클래스입니다 : 여기
는 마이그레이션 클래스입니다.public class ApplicationUser : IdentityUser, ICurrentUser
{
public ApplicationUser()
{
Email = "";
Language = "";
}
public string UserId {
get { return base.Id; }
set{}
}
public string Email { get; set; }
public string Language { get; set; }
}
다음은이 새 클래스에 대한 Entity Framework 구성 클래스입니다.
public class ApplicationUserConfiguration : EntityTypeConfiguration<ApplicationUser>
{
public ApplicationUserConfiguration()
{
this.HasKey(d => d.Id);
this.Ignore(d => d.UserId);
}
}
는 모두가 동일한 구성의 DataContext를 저장 사용 :
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//... others entity here
modelBuilder.Configurations.Add(new ApplicationUserConfiguration());
//Theses configuration are required since custom fields are added to ApplicationUser. Here is why : http://stackoverflow.com/questions/19474662/map-tables-using-fluent-api-in-asp-net-mvc5-ef6
modelBuilder.Entity<IdentityUserLogin>().HasKey(l => l.UserId);
modelBuilder.Entity<IdentityRole>().HasKey(r => r.Id);
modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}
내 질문은 : 왜 신원 테이블에서 중복 ASPNET의 prefixe 테이블 이름이 무엇입니까? 웹 응용 프로그램이 다른 응용 프로그램을 사용하는 동안 시드가 왜 시드를 사용합니까?
감사합니다. 나는 IdentityContext를 사용하여 모든 작업을 수행했습니다. –