2013-07-14 70 views
0

相同的表參考我有像下面的對象:刪除語句衝突以在實體框架5

public class AdminMenuItem : BaseEntity 
{ 
    public int? ParentMenuItemId { get; set; } 
    public string Name { get; set; } 
    public string Url { get; set; } 

    public AdminMenuItem ParentMenuItem { get; set; } 
} 

我添加了兩個菜單項。一個是沒有父菜單的A.另外一個B和A是父菜單項爲B.

當我刪除一個,它引發了我的異常下面:

The DELETE statement conflicted with the SAME TABLE REFERENCE constraint "FK_dbo.AdminMenuItem_dbo.AdminMenuItem_ParentMenuItemId". 

衝突發生於數據庫「A61DB」表「dbo.AdminMenuItem」, 列'ParentMenuItemId'。 聲明已被終止

我應該怎樣做才能刪除父項時刪除子項?我應該手動把它放在一個循環中嗎?還是有足夠的方法在實體框架5中做到這一點?我嘗試使用WillCascadeOnDelete但我無法成功。

還有沒有辦法將子對象的外鍵設置爲null? (這是可選的)

回答

0
+0

不能與自我參照儘管可能(HTTP:/ /stackoverflow.com/q/528529/861716) –

+0

哦,是的,沒錯。 :) –

+0

SQL Server也只允許一個級聯路徑,這是複雜對象圖的重要限制https://support.microsoft.com/en-us/help/321843/error-message-1785-occurs-when-you-create -a-外鍵約束,也就是說,可能原因,多級聯通道 –