身份框架组合密钥

时间:2016-09-14 04:48:08

标签: entity-framework key asp.net-identity composite

我正在使用实体框架和身份框架(IdentityUserIdentityRole)。我有一个表,其中包含指向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; }
}

尼科

1 个答案:

答案 0 :(得分:0)

查看您的外键nameof(Chief),您可能没有设置完整的关系。

还有一个问题可能对here.

有帮助