Comment changer les noms de table pour ASP.net Identité 2.0 avec int ID colonnes?

J'ai utilisé ASP.net l'adhésion depuis des années et je suis juste de commencer à essayer ASP.net l'Identité. Ils viennent de sortir la version 2.0 et qui est censée soutenir int des clés primaires. J'ai défini mon identité personnalisée classes comme suit afin d'obtenir integer primary key support:

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);
    }
}

Lorsque je crée une migration de base de données, il crée bien un entier Identifiant de chaque colonne de l'identité des tables, cependant, il est ignorant mon tableau personnalisé noms spécifiés dans la OnModelCreating méthode. Au lieu de cela je obtenir les noms de table comme dbo.AspNetUsers et dbo.AspNetRoles.

J'ai aussi essayé d'ajouter le [Table("TableName")] à mon identité personnalisée classes et il n'a pas d'effet.

En regardant des exemples pour ASP.net l'Identité 1.0, il semblait qu'ils se répètent chaque de la modelBuilder.Entry<Type>().ToTable("TableName") lignes à l'aide de la base de l'Identité des classes:

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");

Cependant, j'ai essayé plusieurs variantes et mon migrations ne serait pas générer. Je continue de recevoir des erreurs similaires à Le type 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]]"n'a pas été cartographiés. Vérifiez que le type n'a pas été explicitement exclue par l'aide de l'Ignorer méthode ou NotMappedAttribute annotation de données. Vérifiez que le type a été défini comme une classe, n'est pas primitive ou génériques, et de ne pas hériter de EntityObject.

Comment puis-je générer personnalisé noms de table avec entier clés primaires dans ASP.net Identité 2.0?

  • s'il vous arrive de débarquer ici à la recherche de l'identité 3.0, découvrez ce q/r>. +1 tout autour de
InformationsquelleAutor Sam | 2014-04-04