Nếu bạn không muốn vào cơ sở dữ liệu để truy xuất tất cả các trường của đối tượng, bạn có thể tạo một thể hiện mới của lớp, đính kèm nó vào một ngữ cảnh mới, loại bỏ và lưu thay đổi. Điều này cho phép EF tạo ra lệnh xóa thích hợp.
using (var context = new MyContext())
{
var myObject = new MyObject { ID = 3 };
context.MyObjectSet.Attach(myObject);
context.MyObjectSet.DeleteObject(myObject);
context.SaveChanges();
}
Lưu ý: điều này sẽ loại trừ ngoại lệ bạn đang cố gắng xóa đối tượng không tồn tại. Điều đó chỉ thích hợp nếu bạn chắc chắn rằng đối tượng tồn tại.
Note 2: điều này giả định bạn đã thiết lập các đơn vị của bạn để tạo ra lệnh xóa tài liệu tham khảo không có các lĩnh vực khác hơn so với ID (có nghĩa là không có tài sản Timestamp, hoặc bất cứ điều gì tương tự mà sẽ được bao gồm trong truy vấn)
Điều đó có thực sự hoạt động không? Ngọt! Điều đó sẽ hữu ích. +1 – BZink
Nó hoạt động, nhưng tôi nên thêm rằng nó chỉ hoạt động nếu lệnh xóa do EF tạo ra không tham chiếu đến các trường khác ngoài ID. Nếu bạn có trường Dấu thời gian, EF sẽ bao gồm trong truy vấn được tạo, nhưng vì nó không biết giá trị để sử dụng, truy vấn sẽ sai. – hvd