2017-10-18 2 views
0

Comment puis-je supprimer Toutes les entités enfants d'une relation un à plusieurs via le parent? Remarque: je souhaite uniquement supprimer les enfants.ASP MVC 5 - Supprimer les entités enfants du parent

public class Parent 
{ 
    public int Id { get; set; } 
    public ICollection<Child> Children { get; set; } 
} 

public class Child 
{ 
    public int Id { get; set; } 
    public int ParentId { get; set; } 
    public string Name { get; set; } 

    public virtual Parent Parent { get; set; } 
} 

Y at-il un raccourci, permet de dire quelque chose comme ci-dessous:

parent.children.Remove(); 

Répondre

0

Je crois que votre mécanisme de suppression des éléments enfants dans EF 4 et ci-dessus doit être:

parent.children.ToList().ForEach(c => context.Children.Remove(c)); 
context.SaveChanges(); 

J'ai trouvé dans le passé que peut être plus rapide pour écrire un DELETE vous-même, mais vous devriez décider ce qui est le mieux pour vous. L'introduction d'un SQL DELETE dans une solution Entity Framework ajoute une certaine complexité à la fois aux tests et parce que votre DELETE dépendra de choses que vous avez peut-être essayé d'éviter car EF s'occupe de tout cela. Toujours mesurer avant d'optimiser et de décider quels compromis fonctionnent pour vous.

+0

Comment puis-je l'enlever avec Delete? Je reçois erreur «DbSet ne contient pas une définition pour supprimer» – adam78

+0

@ adam78 - ils ont désapprouvé cette méthode ... qui savait! (bien qu'il soit toujours sur ObjectContext), donc l'exemple a été mis à jour. – Fenton