Vì vậy, đây là tình hình của tôi:Entity Framework, mềm xóa và truy vấn
Tôi mềm xóa một số hàng trong một bảng, sử dụng một lá cờ IsDeleted
, do đó một có thể giữ một dấu vết của dữ liệu lưu trữ của tôi. Tôi làm như vậy bằng cách ghi đè tuyên bố SaveChanges
trong số ObjectContext
của tôi.
Câu hỏi đặt ra là: làm cách nào tôi có thể chọn chỉ (các) hàng có IsDeleted == false
mà không phải chỉ định && !IsDeleted
trong mỗi truy vấn?
Có cách nào tôi có thể chỉ định điều này trực tiếp trên ngữ cảnh của mình không?
tkx!
EF Code-đầu tiên hay Model đầu tiên? – StriplingWarrior
Thay vì Gắn cờ, hãy sử dụng một bảng. Đối với bảng đã xóa, PK có thể là PK giống như bảng chính, với PK của bảng bị xóa là FK đến bảng chính. Nếu bạn đã có một bản ghi trong xóa, sau đó nó bị xóa, nếu không hoạt động. Sau đó, nó chỉ là một tham gia đơn giản. Hiệu suất truy vấn sẽ tốt hơn so với sử dụng cờ bit. –
@JonRaynor: Cơ sở dữ liệu không phải là chuyên môn của tôi, nhưng có vẻ như với tôi rằng việc kiểm tra cờ bit ít tốn kém hơn nhiều so với việc tham gia, đặc biệt vì bạn thường quan tâm hơn đến việc biết mục nào * không * bị xóa (và do đó không có mặt trong bảng đã xóa). Nếu cờ bit làm tổn thương hiệu năng truy vấn, tôi muốn một chỉ mục tạo ra một bảng hoàn toàn riêng biệt. – StriplingWarrior