EF не создает таблицы идентичности AspNet

1

У меня есть простая схема идентификации aspnet, но я не могу создать таблицы Identity в моей базе данных. Heres основные классы, используемые веб-сайтом MVC для идентификации:

 public class ApplicationUser : IdentityUser
{
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        if (modelBuilder == null)
        {
            throw new ArgumentNullException("modelBuilder");
        }

        modelBuilder.Entity<IdentityUser>().ToTable("AspNetUsers");
        EntityTypeConfiguration<ApplicationUser> table =
            modelBuilder.Entity<ApplicationUser>().ToTable("AspNetUsers");

        table.Property((ApplicationUser u) => u.UserName).IsRequired();

        modelBuilder.Entity<ApplicationUser>().HasMany<IdentityUserRole>((ApplicationUser u) => u.Roles);
        modelBuilder.Entity<IdentityUserRole>().HasKey((IdentityUserRole r) =>
            new { UserId = r.UserId, RoleId = r.RoleId }).ToTable("AspNetUserRoles");

        EntityTypeConfiguration<IdentityUserLogin> entityTypeConfiguration =
            modelBuilder.Entity<IdentityUserLogin>().HasKey((IdentityUserLogin l) =>
                new
                {
                    UserId = l.UserId,
                    LoginProvider = l.LoginProvider,
                    ProviderKey
                        = l.ProviderKey
                }).ToTable("AspNetUserLogins");

        entityTypeConfiguration.HasRequired<IdentityUser>((IdentityUserLogin u) => u.User);
        EntityTypeConfiguration<IdentityUserClaim> table1 =
            modelBuilder.Entity<IdentityUserClaim>().ToTable("AspNetUserClaims");

        table1.HasRequired<IdentityUser>((IdentityUserClaim u) => u.User);

        modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles");

        EntityTypeConfiguration<IdentityRole> entityTypeConfiguration1 =
            modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles");

        entityTypeConfiguration1.Property((IdentityRole r) => r.Name).IsRequired();
    }
}

Когда я пытаюсь войти в систему, метод OnModelCreating выполняется, но когда я иду в базу данных, таблицы не создаются, и я получаю сообщение об ошибке "Недопустимое имя столбца AspNetUsers". Что здесь не так?

Теги:
entity-framework
asp.net-identity

1 ответ

5
Лучший ответ

К вашему Global.Asax добавить

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ApplicationDbContext>());

Это снизит и заново создаст базу данных при каждом изменении модели.

Узнайте больше о стратегиях инициализации базы данных Entity Framework

  • 0
    Вы только что спасли мой день ... +1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню