Bonjour,
J'ai dans ma base de données 2 tables, reliées entre elles par un foreign key. Soit la table A ayant un id_B devant être compris dans les entrées de la table B.
Dans mon application, j'ai une fonction qui doit supprimer des entrées dans la table B. Hors cela peut provoquer des exceptions (car on supprime des entrées utilisées par la FK de la table A).
En regardant l'exception levée, j'ai donc pu implémenter un try catch avec récupération de l'exception SqlException.
Ce qui fonctionne dans un premier temps, car si je supprime une entrée valide (non liée par la FK), tout fonctionne et si je supprime une entrée non valide, l'exception est gérée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 try { var monEntreeB = (from b in db.tableB where b.ID.Equals(monID) select b).FirstOrDefault(); db.campus.DeleteOnSubmit(monEntreeB); db.SubmitChanges(); } catch (System.Data.SqlClient.SqlException sqlException) { MessageBox.Show("une erreur sqlException a été levée"); }
Le problème est que si je commence par supprimer une entrée non valide et qui lève l'exception, après, peut importe si je supprime une entrée valide ou non, l'exception est toujours levée.
Savez vous pourquoi?
Une première idée serait que le DeleteOnSubmit() n'est pas annulé lorsque le SubmitChanges() échoue, mais je ne sais pas comment l'annuler (un Rollback en LINQ?).
Merci d'avance!
Partager