2015-11-02 38 views
0

我有2个实体,例如Parent和Child。Linq To Sql,实体的扩展删除不会再让它删除

什么,我想在这里实现的是具有实体子扩展,所以我可以做的,当它被删除一些东西的删除方法,这是我迄今所做的:

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(); 
} 

该代码总是工作,但是当我尽量延长孩子的删除方法,似乎要等我决定是否删除它们,并且我得到一个父母不能b的异常e删除它有孩子的地方。

+0

你怎么通过扩展删除方法的意思是,你想改变的定义一个自动生成的类 –

+0

我不想改变它的原始定义,我只是想添加一个类似事件的事件,所以当它被删除时我做了一些事情。 –

+0

我知道它可能与SQL中的触发器,但它可能与linq-to-sql? –

回答

0

我认为你必须找到你的删除子方法中的所有父母,并删除这个特定的子表单他们的Childs集合...这将删除关系,然后你可以删除孩子本身。