2010-08-27 7 views
2

Lorsque j'ai une entité parente qui contient une liste d'autres entités (relation un à plusieurs), je modifie cette liste puis appelle la fonction pour enregistrer l'entité parente. Avec les entités a retiré de cette liste, est-ce que le cadre va les supprimer de la base de données? Et aussi la nouvelle entité a ajouté à la liste sera ajouté à la base de données? merci pour votre aide!Entity framework - Modifier une liste d'objets enfants

Répondre

3

En supposant que vous avez une relation entre un parent et un enfant, i. e., Parent a ChildList et Child a Parent. En regardant les cas. Si Parent est dans le contexte d'entité et que vous ajoutez une instance de Child to ChildList de Parent, et enregistrez le contexte, Child sera ajouté à la base de données.

Parent parent = new Parent() { Name = "parent1" }; 
provider.AddToParentSet(parent) 
parent.ChildList.Add(new Child() { Name = "child1" }); 
parent.ChildList.Add(new Child() { Name = "child2" }); 
parent.ChildList.Add(new Child() { Name = "child3" }); 
provider.SaveChanges(); 

Si vous supprimez l'un des enfants du ChildList des parents, et de sauvegarder le contexte, alors vous aurez une exception en raison de la contrainte de clé étrangère.

Parent parent = provider.ParentSet.FirstOrDefault(); 
parent.ChildList.Remove(parent.ChildList.FirstOrDefault()); 
provider.SaveChanges(); 

Si vous supprimez un des Childs qui appartiennent à ChildList du parent du contexte et de sauvegarder le contexte, il sera couronné de succès, il sera retiré de la base de données.

provider.DeleteObject(parent.ChildList.FirstOrDefault()); 
provider.SaveChanges(); 

Les situations ci-dessus sont valides pour la configuration par défaut d'un modèle d'entité. Entity Framework fournit également de nombreuses options, vous pouvez également décider comment se comporte votre contexte d'entité. Vous avez juste besoin d'essayer ces situations et d'autres par vous-même. Ce sera mieux je pense.