我使用实体框架代码优先自动创建我的数据库模式,我的一个实体如下所示:
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
'sICollection<AssessmentsCaseStudies>
与CaseStudyId
列,因此它创建自己的列来将两者链接在一起以用于该导航属性。