0

J'ai dans ma base de données une table de contacts et une table de téléphone, dans la table de téléphone il y a la colonne "ContactId" avec une clé qui référence le téléphone au contact.Besoin d'aide avec ADO.NET Entity Framework UpdateException

Dans les options de clé du serveur, j'ai défini son option de suppression sur 'Cascade'.

Maintenant, lorsque je tente de supprimer un contact à l'aide du contexte:

Dim contact As Contact 'The contact I want to delete. 
Dim context As New Entities 'The ObjectContext. 
context.DeleteObject(contact) 
context.SaveChanges() 

La déclaration ci-dessus jette un UpdateException me laisser savoir que le contact ont toujours relevés téléphoniques dont contactID col est fixé à son ID.

Maintenant, je sais que je peux le faire manuellement et supprimer d'abord tous les téléphones connexes, puis supprimer le contact, mais je cherche un moyen plus efficace, je veux que tout cela devrait être fait automatiquement.

Toutes les suggestions et pratiques sont les bienvenues.

Merci.

Répondre

0

Vous n'avez pas besoin de supprimer manuellement les enregistrements du téléphone, mais vous devez les charger. Une fois les enregistrements chargés, Entity Framework déterminera ce qu'il faut faire.

En outre, cet article de blog a a method for deleting objects in the entity framework without retrieving them first. Le problème de la suppression d'objets avec des références à des objets connexes est discuté. Cela pourrait vous aider à comprendre ce qui se passe sous le capot.

+0

Bonjour Craig! Le lien que vous avez fourni était très utile! Cependant, il n'a pas répondu à ma question, ou du moins je ne l'ai pas compris. J'ai chargé le contact + les téléphones et quand je supprime je reçois toujours l'exception. Pourriez-vous s'il vous plaît poster un bref exemple? Merci beaucoup! – Shimmy

+0

C'est vraiment aussi simple que ça: contract.Phones.Load(). Si cela ne fonctionne pas, quelque chose ne va pas, et je ferais en sorte que votre mapping soit correct. –