2015-11-02 2 views
0

J'ai 2 entités, par exemple Parent et Enfant.Linq To Sql, suppression étendue d'une entité ne le supprimera plus

ce que je suis en train de faire ici est d'avoir Supprimer méthode d'entité enfant étendu afin que je puisse faire des choses quand il supprime, voici ce que je l'ai fait jusqu'à présent:

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

il y a un événement dans le code qui supprimerait un parent et tous ses enfants, quelque chose comme ceci:

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

ce code a toujours travaillé, mais lorsque je tente d'étendre la méthode Delete de l'enfant, il semble attendre pour moi pour décider si oui ou non pour les supprimer, et j'obtiens une exception que Parent ne peut pas b e supprimé où il a enfant.

+0

Que voulez-vous dire par l'extension de la méthode Delete, essayez-vous de modifier la définition d'une classe générée automatiquement –

+0

Je ne veux pas changer sa définition d'origine, je veux juste ajouter un événement comme méthode, donc quand il est supprimé, je fais quelque chose. –

+0

Je sais que c'est possible avec les Triggers en SQL, mais est-ce possible avec linq-to-sql? –

Répondre

0

Je pense que vous devez trouver tous les parents dans votre méthode de suppression des enfants et supprimer cette forme enfant spécifique de leur collection Childs ... cela supprimera la relation et vous pourrez ensuite supprimer l'enfant lui-même.