Về thực thể (hoặc đối tượng), bạn có một Class
đối tượng có một tập hợp Students
và một Student
đối tượng có một tập hợp Classes
. Vì StudentClass
bảng của bạn chỉ chứa Id và không có thông tin bổ sung, EF không tạo thực thể cho bảng tham gia. Đó là hành vi đúng và đó là những gì bạn mong đợi.
Bây giờ, khi thực hiện chèn hoặc cập nhật, hãy cố gắng suy nghĩ về các đối tượng. Ví dụ: nếu bạn muốn chèn một lớp có hai sinh viên, hãy tạo Class
đối tượng, các Student
đối tượng, thêm sinh viên vào Students
tập hợp lớp, hãy thêm Class
đối tượng vào ngữ cảnh và gọi 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();
}
Thao tác này sẽ tạo một mục nhập trong Class
bảng, hai mục nhập trong Student
bảng và hai mục nhập trong StudentClass
bảng liên kết chúng với nhau.
Về cơ bản bạn cũng làm như vậy đối với các bản cập nhật. Chỉ cần tìm nạp dữ liệu, sửa đổi đồ thị bằng cách thêm và xóa các đối tượng khỏi bộ sưu tập, gọi SaveChanges
. Kiểm tra câu hỏi tương tự này để biết chi tiết.
Chỉnh sửa :
Theo nhận xét của bạn, bạn cần phải chèn một cái mới Class
và thêm hai cái hiện có Students
vào nó:
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();
}
Vì cả hai sinh viên đều đã có trong cơ sở dữ liệu nên chúng sẽ không được chèn vào, nhưng vì chúng hiện đang ở trong Students
bộ sưu tập của Class
hai mục nhập sẽ được chèn vào StudentClass
bảng.