删除对象及其相关实体

有谁知道如何删除对象及其所有相关实体。

例如,我有表,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文件中分两部分添加

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

看看这个问题 。
在那里描述了一级关联的情况。 如果您正确设置OnDelete操作,则删除所有关联的子对象应该没有问题。

此外,如果您在visual studio中查看edmx文件,可以选择“关联”并选择“End1 OnDelete”属性并设置为“Cascade”。

值得注意的是,您需要确保加载对象以便删除它们 – 我启用了Cascade但是在我加载了所需的对象之前它没有帮助(有趣的是,我也根本不需要打开Cascade我的情况)。 我已经记录了post的详细信息,这些信息帮助我最大程度地追踪了Entity Framework删除子对象的细节