刪除對象及其相關實體

c# c#-4.0 entity-framework linq-to-entities

有誰知道如何刪除對象及其所有相關實體。

例如,我有表,Products,Category,ProductCategory和productDetails,productCategory正在連接Product和Category的表。

我從http://msdn.microsoft.com/en-us/library/bb738580.aspx上讀到

刪除父對像還會刪除受約束關係中的所有子對象。此結果與在關係的關聯上啟用CascadeDelete屬性相同。

我正在使用此代碼:

Product productObj = this.ObjectContext.Product.Where(p => p.ProductID.Equals(productID)).First();

if (!productObj.ProductCategory.IsLoaded)
    productObj.ProductCategory.Load();

if (!productObj.ProductDetails.IsLoaded)
    productObj.ProductDetails.Load();

//my own methods.
base.Delete(productObj);
base.SaveAllObjectChanges();

但我在ObjectContext.SaveChanges();上收到錯誤ObjectContext.SaveChanges();也就是說,

正在從AssociationSet '添加或刪除關係。使用基數約束時,還必須添加或刪除相應的“ProductCategory”。

一般承認的答案

謝謝回复。我已經解決了我的問題。在EDMX中使用相同的級聯。為了解釋我正在回答我自己的問題。 :)

我們必須在EDMX文件中分兩部分添加<OnDelete Action="Cascade"></OnDelete>

  1. 在SSDL部分
  2. 在CSDL部分

熱門答案

看看這個問題
在那裡描述了一級關聯的情況。如果您正確設置OnDelete操作,則刪除所有關聯的子對象應該沒有問題。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因