Переименование таблицы dbo.AspNetUsers

Я пытаюсь переименовать имена таблиц по умолчанию, созданные ASP.net Identity 2.0. Я прочитал все статьи, вопросы и ответы на stackoverflow, но я все равно получаю ту же ошибку.

Я переименовал эти таблицы в роли, UserClaims, Logins, UserRoles и Users. Я также изменил приложение dbcontext на следующие

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

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

    protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) {
        base.OnModelCreating(modelBuilder);


        modelBuilder.Entity<IdentityUser>().ToTable("Users", "dbo");
        modelBuilder.Entity<IdentityRole>().ToTable("Roles", "dbo");
        modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles", "dbo");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims", "dbo");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins", "dbo");

    }

}

Но я продолжаю получать ошибку Invalid object name 'dbo.AspNetUsers'., и я понятия не имею, почему она все еще пытается найти AspNetUsers в первую очередь, а не просто пользователей, хотя я сделал изменения выше. В настоящее время полностью отчаянно.

enter image description here

В базе данных также одинаковые столбцы с именами новых таблиц:

enter image description here

И проект базы данных SQL:

enter image description here

Ответ 1

Вам нужно обновить базу данных. Enable-Migrations и Update-Database, подробно объясняется здесь. Первым подходом к EF-коду является запись наших классов моделей и конфигураций, и каждый раз, когда мы меняем что-то, мы используем миграции EF для обновления схемы базы данных.

Первый подход к базе данных с asp.net-identity-entityframework объясняется здесь и здесь, не так прямой

Ответ 2

Напишите следующий код в IdentityModels.cs

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DBConnectionString", throwIfV1Schema: false)
    {
    }

    protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims");
        modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins");
        modelBuilder.Entity<IdentityRole>().ToTable("Roles");
        modelBuilder.Entity<ApplicationUser>().ToTable("Users");
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

Напишите следующий код в методе Application_Start() в файле Global.asax.cs

Database.SetInitializer<ApplicationDbContext>(null);