Dalam istilah entitas (atau objek) Anda memiliki Class
objek yang memiliki koleksi Students
dan Student
objek yang memiliki koleksi Classes
. Karena StudentClass
tabel Anda hanya berisi Id dan tidak ada informasi tambahan, EF tidak menghasilkan entitas untuk tabel penggabungan. Itu adalah perilaku yang benar dan itulah yang Anda harapkan.
Sekarang, ketika melakukan penyisipan atau pembaruan, cobalah untuk berpikir dalam kerangka objek. Misalnya jika Anda ingin memasukkan kelas dengan dua siswa, buat Class
objek, Student
objek, tambahkan siswa ke Students
koleksi kelas tambahkan Class
objek ke konteks dan panggil 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();
}
Ini akan membuat entri di Class
tabel, dua entri di Student
tabel dan dua entri di StudentClass
tabel yang menghubungkan keduanya.
Anda pada dasarnya melakukan hal yang sama untuk pembaruan. Ambil saja datanya, ubah grafik dengan menambahkan dan menghapus objek dari koleksi, panggil SaveChanges
. Periksa pertanyaan serupa ini untuk detailnya.
Edit :
Menurut komentar Anda, Anda perlu memasukkan yang baru Class
dan menambahkan dua yang sudah ada 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();
}
Karena kedua siswa sudah ada dalam database, mereka tidak akan disisipkan, tetapi karena mereka sekarang berada dalam Students
kumpulan Class
, dua entri akan disisipkan ke dalam StudentClass
tabel.