2016-09-14 8 views
0

저는 Entity Framework 및 ID 프레임 워크 (IdentityUser, IdentityRole)를 사용하고 있습니다. Users 테이블을 가리키는 복합 키 (테이블 Country)가있는 테이블이 있습니다. 모든 키가 동일한 경우ID 프레임 워크 복합 키

불행하게도, EF는 그렇지 않으면 당신이를 얻을 수 있습니다, 관계를 구축 할 수 있습니다 :

관계 제약에 종속와 교장 역할의 속성의 수는 동일해야합니다.

그래서 어떻게 처리 할 수 ​​있습니까? 지금은이 합성 키를 ApplicationUser:IdentityUser에 추가하려고 시도했지만이 방법으로 사용자 인터페이스, 역할, 클레임, 로그인 등 모든 엔터티에 복합 키를 추가해야합니다. 여기

내 모델 클래스이다 : 당신의 외래 키 nameof(Chief)

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

도움이 될 또 다른 질문이며,이 하나의 열 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

봐, 당신은 전체의 관계가 설정이되지 않을 수도 있습니다.

이 당신이 applicationuser에 두 개의 키가 지금 here.

관련 문제