2016-09-14 54 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.