복합 키 엔터티 프레임 워크 7 "속성을 엔터티 유형에 추가 할 수 없습니다.

c# entity-framework entity-framework-core

문제

나는 역할을 가진 조직에서 사용자의 회원을 관리하는 조직을 만들려고 노력하고있다. 조직에 단 하나의 회원 만 보유하도록 사용자를 제한하려고합니다. 복합 키를 만들어서이 작업을 수행합니다. 그러나 초기 마이그레이션을 만들려고하면 오류가 발생합니다.

InvalidOperationException : 동일한 이름의 탐색 속성이 이미 'OrganizationLogin'엔터티 형식에 있으므로 'User'속성을 'OrganizationLogin'엔터티 형식에 추가 할 수 없습니다.

회원 자격

public class OrganizationLogin
{
    public int OrganizationLoginId { get; set; }
    public OrganizationRole Role { get; set; }
    public Organization Organization { get; set; }
    public OmegaUser User { get; set; } 

}

복합 키를 정의하려고하는 My DBContext :

public class OrganizationLogin
{
    public int OrganizationLoginId { get; set; }
    public OrganizationRole Role { get; set; }
    public Organization Organization { get; set; }
    public OmegaUser User { get; set; } 

}

OnModelCreating 코드를 제거하면 마이그레이션이 성공적으로 완료됩니다.

편집 : 코멘트에서 언급했듯이, 문제는 내가 클래스를 참조하고 엔티티의 키를 가진 속성이 아니라는 것이 었습니다.

인기 답변

요청에 따라 여기 내 해결책은 다음과 같습니다.

public class OrganizationUnitMember
{
    public int OrganizationUnitMemberId { get; set; }
    public int UserId { get; set; }
    public int OrganizationUnitId { get; set; }
    [ForeignKey("UserId")]
    public virtual OmegaUser User { get; set; }
    [ForeignKey("OrganizationUnitId")]
    public virtual OrganizationUnit OrganizationUnit { get; set; }
    public int RoleId { get; set; }
    [ForeignKey("RoleId")]
    public virtual OrganizationRole Role { get; set; }
}

그리고 DbContext :

public class OrganizationUnitMember
{
    public int OrganizationUnitMemberId { get; set; }
    public int UserId { get; set; }
    public int OrganizationUnitId { get; set; }
    [ForeignKey("UserId")]
    public virtual OmegaUser User { get; set; }
    [ForeignKey("OrganizationUnitId")]
    public virtual OrganizationUnit OrganizationUnit { get; set; }
    public int RoleId { get; set; }
    [ForeignKey("RoleId")]
    public virtual OrganizationRole Role { get; set; }
}

참조 된 엔터티의 ID를 추가해야했습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.