我的UserRole表存在问题我通过以下定义重命名了我的表
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Conventions.Remove<PluralizingTableNameConvention>();
builder.Entity<IdentityUserClaim>().ToTable("UserClaim").HasKey<Int32>(r => r.Id);
builder.Entity<IdentityUserLogin>().ToTable("UserLogin").HasKey<string>(l => l.UserId);
builder.Entity<IdentityRole>().ToTable("Role").HasKey<string>(r => r.Id);
builder.Entity<User>().ToTable("User").HasKey(r => new{ r.IDNumber, r.UserName});
builder.Entity<IdentityUser>().ToTable("User").HasKey<string>(r => r.UserName);
builder.Entity<IdentityUserRole>().ToTable("UserRole").HasKey(r => new { r.RoleId, r.UserId });
}
我还没有定义自定义UserRole类,所以在这种情况下我只使用IdentityUserRole。但是,当我查看我的UserRole表时,RoleId
和IdentityRole_Id
具有相似的值
使用我的UserManager
IdentityResult result = await this.UserManager.RemoveFromRoleAsync(regUser.Id, role.Name);
它仅删除IdentityRole_Id
和IdentityUser_UserName
个实体。我无法找到删除RoleId
和UserId
答案 0 :(得分:1)
您应该在代码之前调用base.OnModelCreating(builder);
,这将为AspNetIdentity设置关系
protected override void OnModelCreating(DbModelBuilder builder)
{
// Add this line
base.OnModelCreating(builder);
builder.Conventions.Remove<PluralizingTableNameConvention>();
builder.Entity<IdentityUserClaim>().ToTable("UserClaim").HasKey<Int32>(r => r.Id);
builder.Entity<IdentityUserLogin>().ToTable("UserLogin").HasKey<string>(l => l.UserId);
builder.Entity<IdentityRole>().ToTable("Role").HasKey<string>(r => r.Id);
builder.Entity<User>().ToTable("User").HasKey(r => new{ r.IDNumber, r.UserName});
builder.Entity<IdentityUser>().ToTable("User").HasKey<string>(r => r.UserName);
builder.Entity<IdentityUserRole>().ToTable("UserRole").HasKey(r => new { r.RoleId, r.UserId });
}