2012-03-10 233 views
5

所以我有兩個表,Invoices和InvoiceItems。當我刪除發票時,我想要刪除所有相關的InvoiceItems。實體框架中的級聯刪除

我更新了SQL Server中的關係,以便在刪除發票時執行級聯刪除。但是,實體框架沒有認識到這一變化,但我讀過我需要手動更新我的EDMX來進行級聯刪除。

在我的EDMX的設計視圖

好吧,我點擊了兩個表之間的關係,並檢查了性能,試圖把我的級聯刪除

enter image description here

正如你所看到的,有兩個OnDelete屬性:End1 OnDelete和End2 OnDelete

哪一個我需要設置爲Cascade?

回答

5

如果End1是關係的主體(即您的發票有發票項目),那麼級聯刪除是有意義的。

7

我最初困惑這個爲好,其原因是,我不知道它是否是場導航屬性或描述了物體的結束表示的字段角色名稱,使得Devidigitals無效的答案。

而且答案是這樣的結果是由字段描述角色名稱

因此,如果我們知道,我們要刪除所有InvoiceItems發票當有問題的發票被刪除,我們可能知道,我們應該設置OnDelete爲發票,並找到具體的代表關係中發票的結束處,搜索角色名稱爲「發票」的那一端。在上面的例子中,那就是End1。

這可能是顯而易見的,如果你知道它,但不是如果你不知道。

+0

我看到你編輯了你的帖子,說上面的End2是角色名稱「Invoice」。這不應該是End1嗎? – 2016-11-16 22:15:13

+0

@KyleW哦,我的,當然你是對的。感謝您通知我。 – Alex 2016-11-17 07:16:04