Wie ändere ich Tabellennamen für ASP.net Identity 2.0 mit int ID-Spalten?

Ich verwendet habe ASP.net Mitgliedschaft für Jahre und bin gerade erst anfangen zu versuchen out ASP.net Identität. Sie gerade erschienene version 2.0 soll die Unterstützung int Primärschlüssel. Ich habe mein custom identity-Klassen wie folgt vor, um das zu bekommen integer primary key-Unterstützung:

public class User : IdentityUser<int, UserLogin, UserRole, UserClaim>
{  
}

public class UserLogin : IdentityUserLogin<int>
{
}

public class Role : IdentityRole<int, UserRole>
{
    public string Description { get; set; }  //Custom description field on roles
}

public class UserRole : IdentityUserRole<int>
{
}

public class UserClaim : IdentityUserClaim<int>
{
}

public class MyDbContext : IdentityDbContext<User, Role, int, UserLogin, UserRole, UserClaim>
{
    public MyDbContext() : this("MyDB") { }

    public MyDbContext(string connStringName) : base(connStringName)
    {
        this.Configuration.LazyLoadingEnabled = false;
        this.Configuration.ProxyCreationEnabled = false;
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {

        modelBuilder.Entity<User>().ToTable("Users");
        modelBuilder.Entity<Role>().ToTable("Roles");
        modelBuilder.Entity<UserRole>().ToTable("UserRoles");
        modelBuilder.Entity<UserLogin>().ToTable("UserLogins");
        modelBuilder.Entity<UserClaim>().ToTable("UserClaims");

        base.OnModelCreating(modelBuilder);
    }
}

Wenn ich eine Datenbank erstellen, die migration, die es richtig schafft eine Ganzzahl-Id-Spalte für jede Identität-Tische, aber es ist ignoriert meine benutzerdefinierte Tabelle angegebenen Namen in der OnModelCreating Methode. Stattdessen bekomme ich die Tabelle Namen wie dbo.AspNetUsers und dbo.AspNetRoles.

Habe ich auch versucht, indem die [Table("TableName")] um meine eigene Identität-Klassen, und es hat keine Wirkung.

Im Blick auf die Beispiele für ASP.net Identität 1.0, es sah aus wie Sie wiederholt jede der modelBuilder.Entry<Type>().ToTable("TableName") Linien über der Basis, Identität Klassen:

modelBuilder.Entity<User>().ToTable("Users");
modelBuilder.Entity<IdentityUser<int, IdentityUserLogin<int>, IdentityUserRole<int>, IdentityUserClaim<int>>>().ToTable("Users");

modelBuilder.Entity<Role>().ToTable("Roles");
modelBuilder.Entity<IdentityRole<int, UserRole>>().ToTable("Roles");

modelBuilder.Entity<UserRole>().ToTable("UserRoles");
modelBuilder.Entity<IdentityUserRole<int>>().ToTable("UserRoles");

modelBuilder.Entity<UserLogin>().ToTable("UserLogins");
modelBuilder.Entity<IdentityUserLogin<int>>().ToTable("UserLogins");

modelBuilder.Entity<UserClaim>().ToTable("UserClaims");
modelBuilder.Entity<IdentityUserClaim<int>>().ToTable("UserClaims");

Jedoch, ich habe versucht, verschiedene Variationen und meine Migrationen würde nicht generieren. Ich hielt Erhalt ähnliche Fehler wie Der Typ Microsoft.AspNet.Identity.EntityFramework.IdentityUser'4[System.Int32,Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin'1[System.Int32],Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole'1[System.Int32],Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim'1[System.Int32]]' wurde nicht zugeordnet. Überprüfen Sie, dass der Typ nicht explizit ausgeschlossen, die durch die Nutzung der Ignorieren-Methode oder NotMappedAttribute Daten Anmerkung. Stellen Sie sicher, dass der Typ wurde definiert als eine Klasse, nicht primitiv oder generisch und nicht Erben von EntityObject.

Wie kann ich benutzerdefinierte Tabellennamen mit integer primary keys in ASP.net Identity 2.0?

InformationsquelleAutor der Frage Sam | 2014-04-04

Schreibe einen Kommentar