C# 将IdentityUserClaim导航添加到IdentityUser<;int>;
我正在尝试将IdentityUserClaim导航添加到我的自定义IdentityUserC# 将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
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好的,您继承了正确的baseIdentityDbContext
和正确的泛型参数
问题是基类流畅地配置了不带导航属性的关系。由于流畅配置的优先级高于数据注释,因此忽略了[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);
}