エンティティ(またはオブジェクト)に関してClassは、のコレクションを持つオブジェクトとのコレクションをStudents持つStudentオブジェクトがありClassesます。あなたのでStudentClass、テーブルはIDのみと余分な情報が含まれている、EFは、加入テーブルのエンティティを生成しません。それが正しい動作であり、それはあなたが期待することです。
ここで、挿入または更新を行うときは、オブジェクトの観点から考えてみてください。たとえば、2人の生徒がいるクラスを挿入するClass場合は、Studentオブジェクトを作成し、オブジェクトをクラスのStudentsコレクションに追加して、Classオブジェクトをコンテキストに追加して、次のように呼び出しますSaveChanges。
using (var context = new YourContext())
{
var mathClass = new Class { Name = "Math" };
mathClass.Students.Add(new Student { Name = "Alice" });
mathClass.Students.Add(new Student { Name = "Bob" });
context.AddToClasses(mathClass);
context.SaveChanges();
}
これにより、Classテーブルに1つのエントリ、Studentテーブルに2つのエントリ、StudentClassそれらをリンクするテーブルに2つのエントリが作成されます。
あなたは基本的にアップデートに対して同じことをします。データをフェッチし、コレクションにオブジェクトを追加および削除してグラフを変更し、を呼び出しますSaveChanges。詳細については、この同様の質問を確認してください。
編集:
あなたのコメントによると、あなたは新しいものを挿入しClass、それに2つの既存のものStudentsを追加する必要があります:
using (var context = new YourContext())
{
var mathClass= new Class { Name = "Math" };
Student student1 = context.Students.FirstOrDefault(s => s.Name == "Alice");
Student student2 = context.Students.FirstOrDefault(s => s.Name == "Bob");
mathClass.Students.Add(student1);
mathClass.Students.Add(student2);
context.AddToClasses(mathClass);
context.SaveChanges();
}
両方の生徒がすでにデータベースにあるので、それらは挿入されませんが、現在のStudentsコレクションにあるのでClass、2つのエントリがStudentClassテーブルに挿入されます。