Est-ce que la suppression d'un LINQ DB supprimer également des enregistrements dans d'autres tableaux qui ont une association clé étrangère?

StackOverflow https://stackoverflow.com/questions/2009327

Question

à la racine de mon DB, j'ai une table « Client ». Le client a des clés étrangères vont à environ 6-7 autres tables comme les reçus, adresses, documents, etc. Si je devais supprimer un client à l'aide SubmitChanges (), qui serait chercher tous ces documents avec l'association clé étrangère et les supprimer aussi, ou aurais-je besoin de faire comme 6 requêtes?

Était-ce utile?

La solution

Cela ne se produira si vous avez configuré vos tables de base de données pour le faire avec cascade des suppressions (à savoir on delete cascade).

Pour plus d'informations s'il vous plaît voir Insert, Update et Delete (LINQ to SQL) :

  

LINQ to SQL ne prend pas en charge ou   reconnaître les opérations de suppression en cascade.   Si vous souhaitez supprimer une ligne dans une table   qui a des contraintes contre, vous   doit soit mettre ON SUPPRIMER CASCADE   la règle dans la contrainte de clé étrangère   la base de données, ou utilisez votre propre code pour   d'abord supprimer les objets enfants   empêcher l'objet d'être parent   supprimé. Dans le cas contraire, une exception est   jeté.

Autres conseils

Quel genre d'action en cascade avez-vous sur les relations clés étrangères ??

Par défaut, la plupart des systèmes de base de données (y compris SQL Server, que je présume que vous utilisez) aura pas « ON SUPPRIMER CASCADE » ou toute autre action -. Donc, dans ce cas, rien ne se produirait

Cette requête T-SQL vous montrer vos relations clés étrangères et si oui ou non des actions ou UPDATE SUPPRIMER de référence ont été définis:

SELECT
    name 'FK Constraint',
    OBJECT_NAME(parent_object_id) 'Parent table',
    OBJECT_NAME(referenced_object_id) 'Referenced table',
    delete_referential_action ,
    delete_referential_action_desc ,
    update_referential_action ,
    update_referential_action_desc 
FROM 
    sys.foreign_keys

Si vous voulez quelque chose arrive, vous devez vous assurer que les relations FK sont paramétrés pour utiliser ces actions en cascade.

Voir la documentation MSDN sur Cascading référentielle Contraintes d'intégrité pour plus détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top