删除对象及其相关实体

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操作,则删除所有关联的子对象应该没有问题。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因