, 나의 실체 중 하나는 다음과 같습니다EF 코드 - 처음으로 불필요한 외래 키 열을 생성하는 이유는 무엇입니까?
public class AssessmentsCaseStudies {
#region Persisted fields
[Required]
[Key, Column(Order=0)]
[ForeignKey("Assessment")]
public int AssessmentId { get; set; }
[Required]
[Key, Column(Order=1)]
[ForeignKey("CaseStudy")]
public int CaseStudyId { get; set; }
[Required]
public int Score { get; set; }
[ForeignKey("Follows")]
public int? FollowsCaseStudyId { get; set; }
#endregion
#region Navigation properties
public virtual Assessment Assessment { get; set; }
public virtual CaseStudy CaseStudy { get; set; }
public virtual CaseStudy Follows { get; set; }
#endregion
}
EF 내 데이터베이스를 자동 생성 할 때 다음과 같은 열이있는 테이블을 생성
:
AssessmentId (PK, FK, int, not null)
CaseStudyId (PK, FK, int, not null)
Score (int, not null)
FollowsCaseStudyId (FK, int, null)
CaseStudy_CaseStudyId (FK, int, null)
이것은 CaseStudy_CaseStudyId
열을 제외한 모든 항목에서 문제가 없습니다. 왜 그것이 생성 되었습니까? 그것은 무엇을위한 것인가? 생성을 중지하려면 어떻게해야합니까? 내 생각에 EF는 CaseStudy
의 열을 CaseStudyId
열과 자동으로 일치시킬 수 없으므로 고유 한 열을 만들어 두 개의 탐색 속성을 연결합니다.
나는 그 질문에 대한 대답을 정말로 이해하지 못합니다. 저는 AssessmentsCaseStudies에 정확히 두 개의 CaseStudy 참조를 가지고 있으므로 진정한 다 - 대다 관계는 없으며 접합 테이블이 필요한 이유는 알지 못합니다. 나는'public virtual ICollection AssessmentsCaseStudies {get;을 가진다. 세트; }''CaseStudy'에서, 그렇기 때문에 ICollection이'FollowSCaseStudyId' FK가 아닌'CaseStudyId' FK와 관련되어야한다고 말하고 싶습니다. –
Jez
좋아, 나는 그것이 유용한 정보를 포함 할 수 있다고 생각. 'Assessment','CaseStudy','AssesmentCaseStudy' 엔티티 만 가지고, 각각'ID' 필드와'AssesmentID'와'CaseStudyID를 포함하는'AssesmentCaseStudy'를 포함하는 축소 된 예제를 만들 수 있습니까? '필드? 그렇다면 문제는 여전히 발생합니까? – CodeCaster
나는 "속임수"질문에 대한 대답이 잘 설명하지 못해서 더 좋은 대답을 원하기 때문에이 질문을 닫아서는 안된다고 생각합니다. 다시 투표하려면 투표하십시오. – Jez