EF 6 - Thêm/Xóa nhiều thực thể

Thêm/Xóa nhiều thực thể trong EF 6

Entity Framework 6 đã giới thiệu các phương thức để thêm và xóa một tập các thực thể trong một lần. Phương thức DbSet.AddRange() thêm một tập hợp các thực thể vào ngữ cảnh với trạng thái Added, phương thức này sẽ thực thi lệnh INSERT trong cơ sở dữ liệu cho tất cả các thực thể trên SaveChanges (). Tương tự, phương thức DbSet.RemoveRange() xóa một tập hợp các thực thể có trạng thái Deleted, phương thức này sẽ thực thi lệnh DELETE trong cơ sở dữ liệu cho tất cả các thực thể trên SaveChanges().

Việc thêm hoặc xóa các thực thể bằng phương pháp AddRange RemoveRange sẽ cải thiện hiệu suất. Bạn nên sử dụng các phương pháp này nếu bạn muốn chèn hoặc xóa số lượng lớn các bản ghi khỏi cơ sở dữ liệu bằng Entity Framework.

Ví dụ sau minh họa việc lưu nhiều thực thể.

IList<Student> newStudents = new List<Student>() {
                                    new Student() { StudentName = "Steve" };
                                    new Student() { StudentName = "Bill" };
                                    new Student() { StudentName = "James" };
                                };               

using (var context = new SchoolDBEntities())
{
    context.Students.AddRange(newStudents);
    context.SaveChanges();
}

Ví dụ sau minh họa việc xóa nhiều thực thể.

IList<Student> studentsToRemove = new List<Student>() {
                                    new Student() { StudentId = 1, StudentName = "Steve" };
                                    new Student() { StudentId = 2, StudentName = "Bill" };
                                    new Student() { StudentId = 3, StudentName = "James" };
                                };
    
using (var context = new SchoolDBEntities())
{
    context.Students.RemoveRange(studentsToRemove);
    context.SaveChanges();
}

Lưu ý: EF Core cải thiện hiệu suất của các phương thức AddRange và RemoveRange bằng cách thực hiện các lệnh INSERT và DELETE cho tất cả các thực thể