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");
我想 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");