我正在使用实体框架和身份框架(IdentityUser
, IdentityRole
)。我有一个具有复合键的表(表Country
),它指向Users
表。
不幸的是,EF只能在所有键都相同的情况下建立关系,否则你会得到这样的结果:
关系约束中从属角色和主体角色的属性数量必须相同。
那么,我该如何处理这个呢?现在我已经尝试将这个组合密钥添加到ApplicationUser:IdentityUser
中,但是这样我必须将组合密钥添加到身份框架的所有实体(即用户,角色,声明,登录,…)。
下面是我的模型类:
class Country
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
public int ID { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 2)]
public int Version { get; set; }
[Required]
[ForeignKey(nameof(Chief))]
[Column(Order = 1)]
public string Chief_Id { get; set; }
[Required]
[ForeignKey(nameof(Chief)), Column(Order = 2)]
public int Chief_Version { get; set; }
public virtual ApplicationUser Chief{ get; set; }
}
class ApplicationUser : IdentityUser
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
public override string Id
{
get { return base.Id; }
set { base.Id = value; }
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 2)]
public int Version { get; set; }
}
尼科
查看您的外键nameof(Chief)
,您可能没有设置完整的关系。
这里还有一个问题可能会有帮助。