我已经使用了多年的ASP.net会员资格,并且刚开始尝试使用ASP.net身份。他们刚刚发布了2.0版本,并且应该支持int
主键。我定义我的自定义身份类如为了得到整数主键的支持如下:如何使用int ID列更改ASP.net Identity 2.0的表名?
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);
}
}
当我创建一个数据库迁移,它正确地创建为每个标识表的整数ID列,但是,忽略了OnModelCreating
方法中指定的自定义表名。相反,我得到的表名如dbo.AspNetUsers
和dbo.AspNetRoles
。
我也尝试将[Table("TableName")]
添加到我的自定义标识类中,但它没有任何作用。
在寻找的ASP.net身份1.0的例子,它看起来像他们使用基本身份类重复每个modelBuilder.Entry<Type>().ToTable("TableName")
行:
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");
不过,我试了几个变化,我的迁移不会产生。我一直收到类似于的错误,类型为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]]'未映射。使用Ignore方法或NotMappedAttribute数据注释检查类型是否未被明确排除。验证类型是否定义为一个类,不是原始的或通用的,并且不从EntityObject继承。
如何在ASP.net Identity 2.0中使用整数主键生成自定义表名?
上市,如果你碰巧在这里降落在寻找我的名字牙齿3.0,[检查这个Q/A](http://stackoverflow.com/questions/34523066/how-can-i-change-the-table-names-used-by-asp-net-identity-3- vnext)。 + 1s all – Terminus