身份框架组合密钥



我正在使用实体框架和身份框架(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),您可能没有设置完整的关系。

这里还有一个问题可能会有帮助。

相关内容

  • 没有找到相关文章

最新更新