Linq到Sql,实体的扩展删除不会再让它删除了

本文关键字:删除 扩展 Sql 实体 Linq | 更新日期: 2023-09-27 18:20:07

我有两个实体,例如Parent和Child。

我在这里试图实现的是扩展实体Child的Delete方法,这样我就可以在删除时做一些事情,以下是我到目前为止所做的:

partial class MyDataClassDataContext
{
    partial void DeleteChild(Child instance)
    {
        //My Custom Code Here
    }
}

代码中有一个事件会删除父级及其所有子级,类似于以下内容:

 void DeleteParent(Parent itemParent)
 {
    var ListChilds = db.Parents.Where(p=>p == itemParent).Select(p=>p.Childs);
    if(ListCilds.Any())
    {
       db.Chields.DeleteAllOnSubmit(ListCilds);
    }
    db.Parents.DeleteOnSubmit(itemParent);
    db.SubmitChanges();
 } 

这个代码总是有效的,但当我试图扩展Child的Delete方法时,似乎要等我决定是否删除它们,我得到了一个异常,即Parent不能在它有Child的地方删除。

Linq到Sql,实体的扩展删除不会再让它删除了

我认为你必须在你的delete child方法中找到所有的Parent,并从他们的Childs集合中删除这个特定的child。。。这将删除关系,然后您可以删除子项本身。