2012-11-02 37 views
6

Tôi đang cố tạo mối quan hệ nhiều-nhiều giữa cùng một bảng trong SQL Server.Xóa tầng trên nhiều thành phần giữa cùng một bảng

Tôi có một bảng Object với các cột ObjectIdName.

Mối quan hệ sau những quy tắc:

  • một đứa trẻ có thể có nhiều phụ huynh
  • cha mẹ có thể có nhiều trẻ em
  • ObjectA có thể là một con của ObjectB và ObjectB có thể là một con của ObjectA
  • nhưng một đối tượng không thể là con trực tiếp của chính nó

Vì vậy, tôi tạo một bảng thứ hai ObjectRelation với các cột ParentIdChildId và tất nhiên tôi muốn các mối quan hệ này bị xóa bởi thác.

Nhưng khi tôi thử điều này trong SQL Server tôi nhận được lỗi

Giới thiệu KEY NƯỚC NGOÀI chế 'FK_ObjectRelation_Object1' trên bảng 'tblADMembership' có thể gây ra chu kỳ hoặc nhiều đường thác. Chỉ định ON DELETE NO ACTION hoặc ON UPDATE NO ACTION, hoặc sửa đổi các ràng buộc KEY NGOẠI HỐI khác.

Trong SQL Server Compact tôi nhận được

Mối quan hệ tham chiếu sẽ cho kết quả trong một tài liệu tham khảo có tính chu kỳ mà không được phép.

Tôi đã thực hiện một số nghiên cứu và tôi hiểu tại sao tôi gặp phải những lỗi này, nhưng có cách nào xung quanh việc này cũng sẽ hoạt động trên SQL Server Compact (không có quy trình được lưu trữ) không? Hay có cách nào tốt hơn để mô hình mối quan hệ này?

Trả lời

2

Tôi đã tự mình gặp một vấn đề tương tự .... Tôi đã loại bỏ khóa ngoại. Lôgic xóa theo chu kỳ đã được đẩy lên Mã.

0

Tôi gặp sự cố tương tự với số lần xem trang. Đây là một mã số để xóa đó là hữu ích với tôi: (Tôi lưu id vào các tài sản có giá trị và tôi đang sử dụng một mô hình thực thể framwork xóa) lẽ có thể giúp một người nào đó

private void removeRecursive(TreeNode parentToDelete) 
    { 
     foreach (TreeNode tn in parentToDelete.ChildNodes) 
      removeRecursive(tn); 

     long id = long.Parse(parentToDelete.Value); 
     Category deleteCat = context.Categories.Single(x => x.Id ==id); 
     context.Categories.DeleteObject(deleteCat); 
    } 

PD xin lỗi về tôi tiếng anh thật khủng khiếp ...

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