Supprimer l'Objet et ses entités liées
Personne ne sait comment faire pour supprimer un objet et tous ses entités liées.
Par exemple, j'ai des tables, des Produits, de la Catégorie, ProductCategory et productDetails, le productCategory se joindre à la table d'à la fois Produit et de la Catégorie.
J'ai lu de http://msdn.microsoft.com/en-us/library/bb738580.aspx que
La suppression de l'objet parent également la suppression de tous les objets enfants dans le
contraint relation. Ce résultat est le même que l'activation de l'
CascadeDelete
de propriété sur l'association pour la relation.
Je suis en utilisant ce code:
Product productObj = this.ObjectContext.Product.Where(p => p.ProductID.Equals(productID)).First();
if (!productObj.ProductCategory.IsLoaded)
productObj.ProductCategory.Load();
if (!productObj.ProductDetails.IsLoaded)
productObj.ProductDetails.Load();
//my own methods.
base.Delete(productObj);
base.SaveAllObjectChanges();
Mais j'obtiens une erreur sur ObjectContext.SaveChanges();
I. e.,
Une relation est en train d'être ajoutés ou supprimés à partir d'un
AssociationSet
'FK_ProductCategory_Product'. Avec contraintes de cardinalité, un correspondant "ProductCategory" doit également être ajoutés ou supprimés.
OriginalL'auteur Waheed | 2010-03-18
Vous devez vous connecter pour publier un commentaire.
Merci pour la réponse. J'ai résolu mon problème. À l'aide de la même cascade dans EDMX.
Pour l'explication, je réponds à ma propre question. 🙂
Nous devons ajouter
<OnDelete Action="Cascade"></OnDelete>
dans le fichier EDMX à deux portionsOriginalL'auteur Waheed
Prendre un coup d'oeil à cette question.
Il y a le cas d'un niveau de l'association est décrite. Dans le cas où vous définissez les OnDelete action de manière appropriée, il devrait y avoir aucun problème pour supprimer tous les associés objets enfants.
OriginalL'auteur Devart
Aussi, Si vous regardez votre fichier edmx dans visual studio, vous pouvez sélectionner "l'association" et sélectionnez "End1 OnDelete de la propriété" et sur "la Cascade".
OriginalL'auteur brad oyler
Il est intéressant de noter que vous devez vous assurer que les objets sont chargés pour eux d'être supprimé - j'ai allumé la Cascade, mais il n'aide pas, jusqu'à ce que j'avais objets chargés (en fait je n'ai pas besoin de la Cascade allumé dans mon cas). J'ai documenté les détails sur le post qui m'a le plus aidé à traquer les détails Entity Framework supprimer l'enfant objet
OriginalL'auteur The Coder