私はエンティティ フレームワーク コード ファーストを使用してデータベース スキーマを自動的に作成しています。私のエンティティの 1 つは次のようになります。
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
列を除いてすべて問題ありません。なぜそれが生成されたのですか?それはなんのためですか?生成されないようにするにはどうすればよいですか?CaseStudy
私の疑いでは、EF は'sICollection<AssessmentsCaseStudies>
を列と自動的に一致させることができなくなっCaseStudyId
たため、そのナビゲーション プロパティのために 2 つをリンクする独自の列を作成します。