C# 将IdentityUserClaim导航添加到IdentityUser<;int>;

C# 将IdentityUserClaim导航添加到IdentityUser<;int>;,c#,entity-framework-core,identity,.net-5,C#,Entity Framework Core,Identity,.net 5,我正在尝试将IdentityUserClaim导航添加到我的自定义IdentityUser,我尝试了许多方法,但都没有成功 public class AppUser : IdentityUser<int> { [ForeignKey("UserId")] public List<AppUserClaim> UserClaims { get; set; } } public class AppUserClaim : IdentityUs

我正在尝试将IdentityUserClaim导航添加到我的自定义IdentityUser,我尝试了许多方法,但都没有成功

public class AppUser : IdentityUser<int>
{
    [ForeignKey("UserId")]
    public List<AppUserClaim> UserClaims { get; set; }
}

public class AppUserClaim : IdentityUserClaim<int>
{
}

public partial class ApplicationDbContext : IdentityDbContext<AppUser, AppRole, int, AppUserClaim, AppUserRole, AppUserLogin, AppRoleClaim, AppUserToken>
{
    //DBSets
}
公共类AppUser:IdentityUser
{
[外键(“用户ID”)]

public List

好的,您继承了正确的base
IdentityDbContext
和正确的泛型参数

问题是基类流畅地配置了不带导航属性的关系。由于流畅配置的优先级高于数据注释,因此忽略了
[ForeignKey]
属性,导航属性被映射到带有自身FK的独立关系

因此,当您添加导航属性时,还需要在调用基本实现后覆盖
OnModelCreating
,并重新配置关系,例如

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);

    builder.Entity<AppUser>()
        .HasMany(e => e.UserClaims)
        .WithOne()
        .HasForeignKey(e => e.UserId);
}
模型创建时受保护的覆盖无效(ModelBuilder)
{
基于模型创建(生成器);
builder.Entity()
.HasMany(e=>e.UserClaims)
.WithOne()
.HasForeignKey(e=>e.UserId);
}

您是否继承了
IdentityDbContext
?能否显示派生的
DbContext
的声明,例如
类AppDbContext:?
@IvanStoev我用我的应用程序更新了这个问题bcontext谢谢,Ivan,它很有效
protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);

    builder.Entity<AppUser>()
        .HasMany(e => e.UserClaims)
        .WithOne()
        .HasForeignKey(e => e.UserId);
}