ASP.NET Core Identity 在 AspNetUserRoles 中添加了额外的外键
ASP.NET Core Identity Added extra foreign key in AspNetUserRoles
AspNetUserRoles 中有两个额外的外键(TheUsrId、TheRoleId)table,如下图所示。
这是配置:
public class AppUser : IdentityUser<int>
{
... // other properties
public ICollection<AppUserRole> TheUserRolesList { get; set; }
}
public class AppRole : IdentityRole<int>
{
public ICollection<AppUserRole> TheUserRolesList { get; set; }
}
public class AppUserRole : IdentityUserRole<int>
{
public AppUser TheUser { get; set; }
public AppRole TheRole { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<AppUser>(b =>
{
b.HasMany(x => x.TheUserRolesList)
.WithOne(x => x.TheUser)
.HasForeignKey(x => x.UserId)
.IsRequired();
});
modelBuilder.Entity<AppRole>(b =>
{
b.HasMany(e => e.UserRoles)
.WithOne(e => e.Role)
.HasForeignKey(ur => ur.RoleId)
.IsRequired();
});
base.OnModelCreating(modelBuilder);
}
我尝试了几种方法,例如 并将 TheUser
的名称更改为 User
但最终,我将 UserId1
作为外键。
ASP.NET 当您不在 类.
中编写任何内容时,Core Identity 会在 AppRole 和 AppUserRole 中自行创建自己的关系和列
在 AppUserRole 中,当您创建 TheUser 和 TheRole 属性时,entity framework 在其末尾添加“Id”并创建新关系。所以这是entity framework.
的规则
您应该将它们全部删除并尝试查看原因。
最后,我注意到这是 EntityFrameworkCore 版本 5.0.4 中的一个错误,更新到 5.0.17 后问题解决了。
AspNetUserRoles 中有两个额外的外键(TheUsrId、TheRoleId)table,如下图所示。
这是配置:
public class AppUser : IdentityUser<int>
{
... // other properties
public ICollection<AppUserRole> TheUserRolesList { get; set; }
}
public class AppRole : IdentityRole<int>
{
public ICollection<AppUserRole> TheUserRolesList { get; set; }
}
public class AppUserRole : IdentityUserRole<int>
{
public AppUser TheUser { get; set; }
public AppRole TheRole { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<AppUser>(b =>
{
b.HasMany(x => x.TheUserRolesList)
.WithOne(x => x.TheUser)
.HasForeignKey(x => x.UserId)
.IsRequired();
});
modelBuilder.Entity<AppRole>(b =>
{
b.HasMany(e => e.UserRoles)
.WithOne(e => e.Role)
.HasForeignKey(ur => ur.RoleId)
.IsRequired();
});
base.OnModelCreating(modelBuilder);
}
我尝试了几种方法,例如 TheUser
的名称更改为 User
但最终,我将 UserId1
作为外键。
ASP.NET 当您不在 类.
中编写任何内容时,Core Identity 会在 AppRole 和 AppUserRole 中自行创建自己的关系和列在 AppUserRole 中,当您创建 TheUser 和 TheRole 属性时,entity framework 在其末尾添加“Id”并创建新关系。所以这是entity framework.
的规则您应该将它们全部删除并尝试查看原因。
最后,我注意到这是 EntityFrameworkCore 版本 5.0.4 中的一个错误,更新到 5.0.17 后问题解决了。