Supprimer un objet et ses entités associées

c# c#-4.0 entity-framework linq-to-entities

Question

Est-ce que quelqu'un sait comment supprimer un objet et toutes ses entités associées?

Par exemple, j'ai des tables, des produits, une catégorie, une catégorie de produit et des détails de produit, la catégorie de produit rejoint la table du produit et de la catégorie.

J'ai lu dans http://msdn.microsoft.com/en-us/library/bb738580.aspx que

La suppression de l'objet parent supprime également tous les objets enfants de la relation contrainte. Ce résultat est identique à l'activation de la propriété CascadeDelete sur l'association pour la relation.

J'utilise 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 je reçois une erreur sur ObjectContext.SaveChanges(); C'est à dire,

Une relation est en cours d'ajout ou de suppression à un AssociationSet 'FK_ProductCategory_Product'. Avec les contraintes de cardinalité, une 'ProductCategory' correspondante doit également être ajoutée ou supprimée.

Réponse acceptée

Merci pour la réponse. J'ai résolu mon problème. Utiliser 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 en deux parties

  1. Dans la portion SSDL
  2. Dans la portion CSDL

Réponse populaire

Jetez un oeil à cette question .
Le cas d'association à un niveau est décrit. Si vous définissez correctement l'action OnDelete, il ne devrait pas y avoir de problème pour supprimer tous les objets enfants associés.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow