2015-11-02 32 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集合...這將刪除關係,然後你可以刪除孩子本身。