有谁知道如何删除对象及其所有相关实体。
例如,我有表,Products,Category,ProductCategory和productDetails,productCategory正在连接产品和类别的表。
我已从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();
I.e。,
正在
AssociationSet
'FK_ProductCategory_Product'添加或删除关系。使用基数约束时,还必须添加或删除相应的“ProductCategory”。
答案 0 :(得分:7)
感谢您的回复。我已经解决了我的问题。在EDMX中使用相同的级联。 为了解释我正在回答我自己的问题。 :)
我们必须在EDMX文件中分两部分添加<OnDelete Action="Cascade"></OnDelete>
答案 1 :(得分:5)
看看this question。
在那里描述了一级关联的情况。如果您正确设置OnDelete操作,则删除所有关联的子对象应该没有问题。
答案 2 :(得分:3)
此外,如果您在visual studio中查看edmx文件,可以选择“关联”并选择“End1 OnDelete”属性并设置为“Cascade”。
答案 3 :(得分:0)
值得注意的是,您需要确保加载对象以便删除它们 - 我打开了Cascade但是在我加载了所需的对象之前它没有帮助(有趣的是我也不需要启用Cascade在我的情况下)。我已经记录了帖子的详细信息,这些信息帮助我追踪详细信息Entity Framework delete child object