我已經使用了多年的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