EF Core - 未知关系定义外键

EF Core - unknown relationship define foreign key

我想 link 默认值 IdentityUser 和一个名为 Permission<TUser> 的自定义通用 class TUser = IdentityUser。 class定义如下:

public class Permission<TUser> {
    public TUser User { get; set; }
    public string Identifier { get; set; }
    public IEnumerable<string> Restrictions { get; set; }
}

Identifier 是权限类型,不是唯一的。这意味着该模型只有一个使用用户外键和权限标识符的复合 pk。这就是我定义的:

builder.Entity<Permission<IdentityUser>>()
       .HasKey(p => new {p.User, p.Identifier});

但是要设置权限的外键我必须定义一个关系,我不知道这是哪个。

看来你从IdentityUser到Permission是一对多的关系,所以:

builder.Entity<Permission>()
    .HasOne<IdentityUser>(p => p.User)
    .WithMany();

EF Core 会按照约定分配一个外键。如果您的导航 属性 是 'User' 那么 FK 将是 'UserId'.

您可以通过继续上述配置来覆盖外键:

.HasForeignKey("IdentityUserId");