2010-02-26 113 views
0

我試圖環繞實體框架4.這可能是一個簡單的問題我的頭;)實體框架與許多一對多刪除

我有以下實體:文章,評論和圖片。文章與評論具有一對多關聯。文章也與圖片有多對多的關係。

我的問題是什麼纔是刪除有評論和圖片的文章的正確方法。請注意,您有以下情況:

  1. 文章既沒有評論,也沒有圖片關聯。
  2. 文章有評論,但沒有圖片。
  3. 文章有評論和圖片沒有與其他文章共享。
  4. 文章有與其他文章共享的評論和圖片。 (只有圖片可以共享,評論是獨家的)。

我已經注意到,剛剛執行:

_db.DeleteObject(art); 

不工作,我必須先刪除評論和照片提前。此外,如果圖片是共享的,我只想刪除關聯到特定的文章而不是所有的關聯。

我敢肯定,有更簡單的方法來實現這一點 - 是否有像「級聯刪除」,將照顧這種情況?

我感謝您的幫助!

回答

0

是的,有on delete cascade但不在實體框架中。但是,您可以將它們放在您的多對多鏈接表的外鍵上。

+4

在實體框架中有'刪除級聯':http://blogs.msdn.com/alexj/archive/2009/08/19/tip-33-how-cascade-delete-really-works-in- ef.aspx http://codepolice.net/2008/12/16/cascade-delete-in-entity-framework/ – LukLed 2010-02-26 18:15:12

+0

@LukeLed:引用鏈接:「如果你添加一個級聯刪除規則到模型,你必須有數據庫中相應的DELETE規則。「,但好點。 – 2010-02-26 18:19:03

+1

這是因爲在數據庫中沒有相應的規則的情況下,唯一可能的工作方式是運行一個大的錯誤(考慮未提交的數據)'DELETE FROM ... WHERE ID IN SELECT ....'語句,這看起來像一個奇怪的每個RDBMS都有一個更好的解決方案。 – 2010-02-26 18:21:48