简体   繁体   中英

How to Rename AspNetUsers table for a class inherited from IdentityUser in ASP .NET Core 2.1?

I'm using ASP .NET Core 2.1 for my project with IndividualAuthentication. I need extra properties for my User table so i inherited from IdentityUser like below :

 public class ApplicationUser : IdentityUser
{
    [Required]
    [DataType(DataType.Text)]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.Text)]
    public string LastName { get; set; }
}

After this modification AspNetUsers table is not renamed. All other identity tables are renamed. I don't know why is this happening.

After creating ApplicationUser class i have replaced IdentityUser with ApplicationUser in my code of Startup.cs

Below is the code before Modification

services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));
        services.AddDefaultIdentity<IdentityUser>()
            .AddEntityFrameworkStores<ApplicationDbContext>();

After modification

services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));
        services.AddDefaultIdentity<ApplicationUser>()
            .AddEntityFrameworkStores<ApplicationDbContext>();

This is my OnModelCreating method

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        base.OnModelCreating(builder);

        modelBuilder.Entity<ApplicationUser>().ToTable("User");
        //modelBuilder.Entity<IdentityUser>().ToTable("User");
        modelBuilder.Entity<IdentityRole>().ToTable("Role");
        modelBuilder.Entity<IdentityUserClaim<string>().ToTable("UserClaim");
        modelBuilder.Entity<IdentityUserRole<string>>().ToTable("UserRole");
        modelBuilder.Entity<IdentityUserLogin<string>().ToTable("UserLogin");
        modelBuilder.Entity<IdentityRoleClaim<string>().ToTable("RoleClaim");
        modelBuilder.Entity<IdentityUserToken<string>().ToTable("UserToken");
    }

Now i don't know what other thing i am missing for renaming AspNetUsers table. I didn't find any solution and still searching.

The fluent configuration is ok, but the identity class used as base for your context is not.

As explained in the Customizing the model (emphasis is mine):

The starting point for customizing the model is to derive from the appropriate context type ; see the preceding section.

and the preceding sections explain the base classes, generic type arguments and the default configuration.

With that being said, since you are using only a custom IdentityUser derived class, the base at least should be the IdentityDbContext<TUser> :

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    // ...
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM