Như tôi hiểu, nếu tôi xóa hàng gốc, con của nó sẽ bị xóa nếu tôi bật thác trên xóa. Tuy nhiên, từ thử nghiệm của tôi, nó dường như không hoạt động chút nào. Không có vấn đề gì nếu tôi đặt WillCascaseOnDelete thành true hoặc false, nó chỉ đơn giản là đặt khóa ngoại của con của nó thành null. Điều này gây ra một vấn đề khác mà tôi phải thiết lập khóa ngoại nullable, nếu không, SaveChange sẽ ném ngoại lệ. Đây có phải là khiếm khuyết hoặc hành vi mong muốn không?Làm thế nào để WillCascadeOnDelete trong khuôn khổ thực thể làm việc?
16
A
Trả lời
12
Điều này là do khóa ngoại của bạn (con) không thể sử dụng được. Theo mặc định, khi xóa cha mẹ, nếu khóa ngoài trên mối quan hệ là nullable EF sẽ xóa phụ huynh và đặt khóa ngoài thành rỗng. Nếu khóa ngoài là NOT NULL, nó sẽ xóa con (hành vi bạn đang tìm kiếm?).
Bạn có thể thay đổi hành vi mặc định này here
0
Hãy chắc chắn trên cửa sổ Ngoại chính mối quan hệ trong SQL Server, bạn đã chọn Cascade như quy tắc Delete.
Các vấn đề liên quan
- 1. Khuôn khổ thực thể và đơn vị làm việc
- 2. Khuôn khổ thực thể PostgreSQL
- 3. Làm thế nào để chuyển đổi DbSet trong khuôn khổ thực thể để ObjectQuery
- 4. Khuôn khổ thực thể UnintentionalCodeFirstException
- 5. Khuôn khổ thực thể - Chọn riêng trong
- 6. Làm thế nào để giải quyết xung đột đối chiếu với Khuôn khổ thực thể?
- 7. Làm thế nào để triển khai sản xuất với mã khuôn khổ thực thể đầu tiên
- 8. làm thế nào để 'không phải là' một biểu thức lambda cho thực thể khuôn khổ
- 9. Khuôn khổ thực thể có nhiều edmx
- 10. Làm thế nào để một khuôn khổ mocking hoạt động?
- 11. Khuôn khổ thực thể trên xóa tầng
- 12. thực thể khuôn khổ: điều kiện lọc
- 13. Khuôn khổ thực thể có mã MVC
- 14. khuôn khổ thực thể không làm việc trên bàn mà không có cột sắc
- 15. Làm việc với ma trận, đẩy mạnh khuôn khổ, iOS
- 16. Khuôn khổ thực thể 4 - Thừa kế
- 17. Khuôn khổ thực thể 4.1 Cột ma
- 18. Khuôn khổ thực thể DbContext trong vai trò Web Azure
- 19. Khuôn khổ thực thể và đa luồng
- 20. Mã khuôn khổ thực thể Đầu tiên ReadOnly Thực thể
- 21. So sánh hàng trăm trong Khuôn khổ thực thể
- 22. Khuôn khổ thực thể và MongoDb
- 23. Cách thêm bảng trong Khuôn khổ thực thể?
- 24. Làm thế nào để thêm thực thể khuôn khổ để an ủi ứng dụng (hình ảnh được bao gồm)
- 25. Khuôn khổ thực thể 4.1 LINQ chứa và StartsWith
- 26. làm thế nào để có được giá trị duy nhất bằng cách sử dụng thực thể khuôn khổ
- 27. Từ khóa ảo nào có trên thuộc tính thực thể trong Khuôn khổ thực thể 5?
- 28. Khuôn khổ thực thể 3.5 - Cách tải trẻ em
- 29. Khuôn khổ thực thể Nhiều đối với CRUD
- 30. Làm thế nào để thực hiện một khuôn khổ bộ chuyển đổi trong C++ mà làm việc trong cả Linux và Windows
Tôi gặp vấn đề tương tự, Khóa ngoại của tôi được đặt là 'IsRequired();', mối quan hệ có '.WillCascadeOnDelete (true)' nhưng tôi vẫn nhận được Ngoại lệ khi cố gắng xóa đối tượng mẹ. –
@UwConcept, tôi mong đợi một ngoại lệ sẽ được ném nếu bạn đã chỉ định mối quan hệ khóa ngoài là 'IsRequired(); 'là Entity Framework không thể đặt giá trị thành' null' sau khi loại bỏ đối tượng cha. – weenoid
@weenoid Cảm ơn bạn đã trả lời. Nhưng nó sẽ không có ý nghĩa hơn để sau đó xóa đối tượng con thay vì thiết lập một giá trị NULL trong một trường không nullable? Chỉ cần hai xu của tôi. –