내 사용자 테이블에 추가 할 수 없습니다 기본 키와 같은 두 외래 키 :코드 첫 번째 - 마이그레이션
public class User
{
[Key]
public int UserId { get; set; }
public virtual ICollection<PollVote> PollVotes { get; set; }
}
내 설문 조사 테이블 :
public class Poll
{
[Key]
public int PollId { get; set; }
public virtual ICollection<PollVote> PollVotes { get; set; }
}
내 PollVote 테이블
public class PollVote
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int VoteId { get; set; }
[Key]
public int PollId { get; set; }
[Key]
public int UserId { get; set; }
public DateTime TimeVoted { get; set; }
public int Answer { get; set; }
public virtual Poll Poll { get; set; }
public virtual User User { get; set; }
}
내를 구성 :
//User config:
this.HasMany(x => x.PollVotes)
.WithRequired()
.HasForeignKey(x => x.UserId)
.WillCascadeOnDelete(false);
//Poll Config
this.HasMany(x => x.PollVotes)
.WithRequired()
.HasForeignKey(x => x.PollId)
.WillCascadeOnDelete(false);
//PollVote Config
this.HasKey(x => x.UserId)
.HasRequired(x => x.User)
.WithMany()
.HasForeignKey(x => x.UserId);
this.HasKey(x => x.PollId)
.HasRequired(x => x.Poll)
.WithMany()
.HasForeignKey(x => x.PollId);
관계는 다음과 같습니다. 하나의 설문 조사는 다수의 투표를 가질 수 있지만 사용자는 설문 조사마다 하나의 투표 만 제공 할 수 있습니다.
나는 내가 PM-콘솔에서 Add-Migration
하려고 할 때이 오류가
\ tSystem.Data.Entity.Edm.EdmAssociationEnd : 다중성은 관계의 역할 'PollVote_Poll_Source' 'PollVote_Poll'에서는 유효하지 않습니다. 종속 역할은 주요 속성을 참조하므로 종속 역할의 다중도의 상한은 '1'이어야합니다. \ tSystem.Data.Entity.Edm.EdmAssociationEnd : : 다중도는 'Poll_PollVotes'관계에서 'Poll_PollVotes_Target'역할에서 유효하지 않습니다. 종속 역할은 주요 속성을 참조하므로 종속 역할의 다중도의 상한은 '1'이어야합니다.
의견이 있으십니까? 당신은 데이터 주석에 [Column]
속성을 추가하거나하여 복합 키를 지정
데이터베이스가 VoteID 필드를 중복 생성합니까? – Colin
@Colin : 키와 관계를 정의하기 위해 예. 그러나 어쩌면 그는 어떤 이유로 든 투표소 번호를 매기는 고유 한 카운터를 원할 수도 있습니다. – Slauma