私は自動的に私のデータベーススキーマを作成するには、エンティティフレームワークのコード最初を使用していて、私のエンティティの一つは次のようになります。EFの私のデータベースを自動生成するとき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
}
、それは次の列を持つテーブルを作成します:
これはCaseStudy_CaseStudyId
の列以外はすべて問題ありません。なぜそれが生成されたのですか?それはなんのためですか?どうやってそれを止めることができますか?私の疑惑は、CaseStudy
のとCaseStudyId
の列を自動的に一致させることができなくなるため、そのナビゲーションプロパティ用に2つの列をリンクする独自の列を作成するということです。
私はその質問に対する受け入れられた答えを本当に理解していません。私はAssessmentsCaseStudiesに2つの 'CaseStudy'参照を正確に持っていますので、多対多の関係は本当にありませんし、なぜ接合テーブルが必要なのかわかりません。私は 'public virtual ICollection AssessmentsCaseStudies {get;}を持っています。セット; } '' CaseStudy'では、それで、ICollectionは 'FollowSCaseStudyId' FKではなく、' CaseStudyId' FKに関連していると言い方をしたいと思います。 –
Jez
私はそれが役に立つ情報を含むことができると思った。 'Assessment'、' CaseStudy'、 'AssesmentCaseStudy'エンティティのみで、それぞれが' ID'フィールドと 'AssesmentID'と' CaseStudyIDを含む 'AssesmentCaseStudy'エンティティを含む、トリムダウンされたサンプルを作成できますか? 'フィールド?問題はそれでも起こりますか? – CodeCaster
"dupe"質問に対する受け入れられた答えがうまく説明できず、より良い答えが欲しいので、この質問は閉じていたはずがないと思います。再票に投票してください。 – Jez