2012-03-10 40 views
5

Vì vậy, tôi có hai bảng, Hoá đơn và Hóa đơn. Khi tôi xóa một hóa đơn, tôi muốn tất cả các InvoiceItems có liên quan cũng sẽ bị xóa.Xóa tầng trong Khung thực thể

Tôi đã cập nhật mối quan hệ trong SQL Server để thực hiện xóa tầng khi tôi xóa một hóa đơn. Entity Framework không nhận ra sự thay đổi đó, tuy nhiên, nhưng tôi đã đọc rằng tôi cần phải cập nhật EDMX theo cách thủ công để thực hiện việc xóa tầng.

Vâng trong giao diện thiết kế của EDMX của tôi, tôi nhấp vào mối quan hệ giữa hai bảng, và kiểm tra các tính chất để thử và thiết lập tầng của tôi xóa

enter image description here

Như bạn có thể thấy, có hai thuộc tính OnDelete: End1 OnDelete và End2 OnDelete

Tôi cần đặt điều gì cho Cascade?

Trả lời

5

Nếu End1 là tiền gốc của mối quan hệ (I. Hoá đơn của bạn có các mục hóa đơn) thì có nghĩa là nó sẽ bị xóa.

7

Tôi đã bước đầu bối rối về vấn đề này là tốt, và lý do là tôi đã không chắc chắn về những gì cho dù đó là lĩnh vực Navigation tài sản hoặc lĩnh vực Role Tên đó mô tả những gì đối tượng chấm dứt đại diện, làm cho một câu trả lời như Devidigitals không hiệu quả.

Và câu trả lời cho điều đó là kết thúc được mô tả theo trường tên vai trò.

Vì vậy, nếu chúng ta biết rằng chúng ta muốn xóa tất cả InvoiceItems cho một hóa đơn khi hóa đơn trong câu hỏi bị xóa, chúng ta có thể biết rằng chúng ta nên thiết lập các onDelete cho Invoice, và để tìm ra cụ thể kết thúc đại diện cho hóa đơn trong mối quan hệ, tìm kiếm kết thúc trong đó tên vai trò là "Hóa đơn". Trong ví dụ trên, đó là End1.

Điều này có thể hiển nhiên nếu bạn biết điều đó, nhưng không phải nếu bạn không biết.

+0

Tôi thấy bạn đã chỉnh sửa bài đăng của mình để nói rằng End2 ở trên là tên vai trò "Hóa đơn". Đó không phải là End1 sao? –

+0

@KyleW Ồ, tất nhiên là bạn đúng. Cảm ơn vì đã thông báo cho tôi. – Alex

Các vấn đề liên quan