Nếu bạn thực sự muốn sử dụng Đã xóa, bạn phải biến các khóa ngoại của mình thành không thể, nhưng sau đó bạn sẽ kết thúc với các bản ghi mồ côi (đó là một trong những lý do chính bạn không nên làm điều đó ngay từ đầu). Vì vậy, chỉ cần sử dụngRemove()
ObjectContext.DeleteObject (thực thể) đánh dấu thực thể là Đã xóa trong ngữ cảnh. (Đó là EntityState bị xóa sau đó.) Nếu bạn gọi SaveChanges sau đó, EF sẽ gửi một câu lệnh XÓA SQL đến cơ sở dữ liệu. Nếu không có ràng buộc tham chiếu nào trong cơ sở dữ liệu bị vi phạm, thực thể sẽ bị xóa, nếu không sẽ có ngoại lệ.
EntityCollection.Remove (childEntity) đánh dấu mối quan hệ giữa cha mẹ và childEntity là Đã xóa. Nếu chính childEntity bị xóa khỏi cơ sở dữ liệu và chính xác điều gì sẽ xảy ra khi bạn gọi SaveChanges tùy thuộc vào loại mối quan hệ giữa hai:
Một điều đáng chú ý là cài đặt .State = EntityState.Deleted
không kích hoạt tự động phát hiện thay đổi. ( lưu trữ )