一部のEntity Frameworkコードファーストモデルでナビゲーションプロパティを設定しようとしています。Entity Frameworkコードリレーショナルテーブルを使用した最初のナビゲーションプロパティ
public class Course
{
[Key]
public int CourseId { get; set; }
public string CourseName { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
public class Student
{
[Key]
public int StudentId { get; set; }
public string StudentName { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
public class StudentCourses
{
[Key, Column(Order = 0)]
public int StudentId { get; set; }
public virtual Student Student { get; set; }
[Key, Column(Order = 1)]
public int CourseId { get; set; }
public virtual Course Course { get; set; }
}
したがって、StudentCoursesテーブルに学生とコースの関係が確立されます。生徒クラスのインスタンスは自動的にその生徒のすべてのコースを参照し、逆も成り立つ場合、コースクラスのインスタンスはすべての生徒を自動的に参照します。そして、StudentCoursesクラスのインスタンスは自動的にそのStudentとCourseを参照します。しかし、Update-Databaseを実行しようとすると、関係は正しく解釈されないようです。私はここに欠けているものはありますか?おそらく、コンテキストクラスでいくつかの設定を行う必要がありますか?ナビゲーションプロパティの例のほとんどは、一対一の関係ナビゲーションプロパティを示しています。
ああ、EFはそのテーブルをモデルから完全に取り除いています。私は、EFが作成するジャンクションテーブルのクラスを用意する必要があると思っていましたが、ナビゲーションプロパティで不要なものになっていると思います。 – Sneakster
はい、EFはあなたのために接合テーブルを作成します。手動で行う必要はありません。 – Sampath