2011-08-31 22 views
0

我有數據庫字段,如如何刪除記錄,其PK是LINQ anothers FK

CId(PK- Auto Generated) 
    IsSub(bit) 
    PId(FK) 

在這種結構中,CID是自動生成的,如果新的記錄的子記錄的CID Issub =真和PID = Cid的ID。

現在,當我想刪除沒有子元素的記錄,它的作品完美。 但如果有嵌套的記錄,那麼它會向我顯示一個錯誤。

如何刪除具有嵌套記錄的記錄。 CID IsSub PID

1   FALSE null 
    2   FALSE null 
    3   TRUE 2 
    4   TRUE 2 

在上述如何刪除CID = 2?

我的代碼是 v

ar del = context.DataTable.Where(c => c.CId == userData.CId).Single(); 
       context.DataTable.DeleteObject(del); 
       context.SaveChanges(); 

這將刪除不持有任何參考關鍵單記錄。 我該怎麼做才能同時刪除 1)delete cid = 1

或者刪除cid = 2,也會刪除cid = 3和4。

回答

0

Linq2SQL沒有固有的級聯刪除功能 - 您需要自己完成工作。一些想法herehere

0

創建fk時,您可以指定在刪除父項或引發異常時是否應自動刪除子記錄。 你的外鍵明顯引發了一個例外。

有三種可能的解決方案:

  1. 更改外鍵,以便它刪除子記錄。 (顯然,在你的數據庫中缺少這個功能)

  2. 在刪除父項之前手動刪除子記錄。

  3. 在刪除父項之前,將子記錄的父項設置爲null(或父項的父項)。