title: ASP.NET Identity duplicates tables with custom names
body: <p>I have a project in ASP.NET MVC 5 with .NET Framework and I'm using Identity to manage user authorization. The requirements of the project don't allow me to leave the default AspNet-(something) names in the database. Also, I need to add some custom attributes to roles and users. So I created a custom user and role class, like this: </p>
  
  <pre><code>public class ApplicationRole : IdentityRole
  {
      public virtual ICollection&lt;RoleApllicationModel&gt; RolesApplications { get; set; }
      public string description{get; set;}
  }
  </code></pre>
  
  <p>With this class if I change the name of the table names like this:</p>
  
  <pre><code>modelBuilder.Entity&lt;ApplicationUser&gt;().ToTable("SSO_USERS");
  modelBuilder.Entity&lt;ApplicationRole&gt;().ToTable("SSO_ROLES");
  modelBuilder.Entity&lt;IdentityUserLogin&gt;().ToTable("SSO_USER_LOGINS");
  modelBuilder.Entity&lt;IdentityUserRole&gt;().ToTable("SSO_USERS_ROLES");
  modelBuilder.Entity&lt;IdentityUserClaim&gt;().ToTable("SSO_USER_CLAIMS");
  </code></pre>
  
  <p>When it creates the database it adds a second table for Roles, one named <code>SSO_ROLES</code> and one <code>AspNetRoles</code>. The <code>aspnetroles</code> table has the <code>id</code> and <code>name</code> and the second has the <code>description</code> and a foreign key pointing to the <code>aspnetroles</code> table. </p>
  
  <p>This doesn't make sense and I'd like to know if there's a way to avoid this behaviour to happen and only create the table <code>SSO_ROLES</code> with <code>id</code>, <code>name</code> and <code>description</code>. If I remove the description attributes, it only creates the <code>SSO_ROLES</code> table.</p>
  
  <p><strong>Edit:</strong></p>
  
  <p>Here's the context of Identity</p>
  
  <pre><code>public class ApplicationDbContext : IdentityDbContext&lt;ApplicationUser, ApplicationRole, string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim&gt;
  {
      public ApplicationDbContext()
          : base("DefaultConnection")
      {
      }
  
      public DbSet&lt;ApplicationModel&gt; Applications { get; set; }
      public DbSet&lt;TokenModel&gt; Tokens { get; set; }
      public DbSet&lt;UserApllicationModel&gt; UsersApplications { get; set; }
      public DbSet&lt;RoleApllicationModel&gt; RolesApplications { get; set; }
  
      static ApplicationDbContext()
      {
          // Set the database intializer which is run once during application start
          // This seeds the database with admin user credentials and admin role
          Database.SetInitializer&lt;ApplicationDbContext&gt;(new ApplicationDbInitializer());
      }
  
      public static ApplicationDbContext Create()
      {
          return new ApplicationDbContext();
      }
  
      protected override void OnModelCreating(DbModelBuilder modelBuilder)
      {
  
          base.OnModelCreating(modelBuilder);
          modelBuilder.Entity&lt;ApplicationUser&gt;().ToTable("SSO_USUARIOS");
          modelBuilder.Entity&lt;ApplicationRole&gt;().ToTable("SSO_ROLE");
          modelBuilder.Entity&lt;IdentityUserLogin&gt;().ToTable("SSO_USUARIO_LOGINS");
          modelBuilder.Entity&lt;IdentityUserRole&gt;().ToTable("SSO_USUARIOS_ROLES");
          modelBuilder.Entity&lt;IdentityUserClaim&gt;().ToTable("SSO_USUARIO_CLAIMS");
      }
  }
  </code></pre>