2016-09-14 36 views
0

我正在使用实体框架和身份框架(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; } 
} 

尼科

+0

现在你有一个applicationuser两个键,以及两个一列FK的从国家到ApplicationUser。我不知道如何在数据注释中做到这一点,流利的API它是modelBuilder.Entity ()。HasKey(x => new {x.Id,x.Version});和modelBuilder.Entity ().HasRequired(x => x.Chief).WithMany()。HasForeignKey(x => new {x.Chief_Id,x.Chief_Version}); – DevilSuichiro

回答

0

看着你的外键nameof(Chief),你可能没有完整的关系成立。

还有另外一个问题,这可能有助于here.