|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() slim AyecheIngénieur software (débutant) Inscription : mars 2010 Messages : 25 ![]() |
Bonjour à tous.
J'ai une question d'ordre général. Quand j'ai une table A et une table B (relation 1-> n c'est a dire dans B foreign key qui référence l'id de A) donc deux Entity (A qui a une liste de fils B) et que je veux supprimer un objet A, que faut-t-il choisir entre ces deux Options : - Modifier ma base de donnée en Ajoutant 'on delete cascade' dans les tables adéquates. - Supprimer dans mon application les fils B (manuellement, notamment avec DeleteOnSubmit(LesFilsB) [linq] ) puis l'objet père A. Merci d'avance. (et bonne année 2012) |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
Bonne question!
(Disclaimer : je ne suis pas un expert DB) Perso, généralement je suis en Cascade Delete. C'est mon côté pragmatique. Il y a un côté "magique" qui ne plait pas toujours, mais je n'ai (pour le moment) pas eu de cas ou un cascade delete aurait été moins bon qu'un "à la main". Ceci n'étant que mon humble avis
__________________
Microsoft MVP : Visual C# MCPD - Windows Developer 4 MCPD - Web Developer 4 MCTS - Silverlight 4, Development “If debugging is the process of removing bugs, then programming must be the process of putting them in.” (Edsger W. Dijkstra) |
|
20
|
|
|
#3 |
![]() ![]() Nathanael MarchandExpert .Net So@t Inscription : octobre 2008 Messages : 3 059 ![]() |
Tout dépend des volumes de données et de l'organisation de la table j'ai envie de dire
Les deux se valent mais j'ai déjà eu des cas ou la cascade était plus lente. Cela était du au fait que l'index que j'utilisais pour supprimer à la main dans la table B était plus performant que l'index utilisé pour la cascade. Et au moins on enlève le côté magique
__________________
Les Forums sont là pour demander de l'aide. Si je peux, je répondrai à un topic avec plaisir! Mais toute demande par Message Privé Retrouvez moi sur : |
|
11
|
|
|
#4 |
|
Invité régulier
![]() slim AyecheIngénieur software (débutant) Inscription : mars 2010 Messages : 25 ![]() |
Merci pour vos Réponses.
J'ai opté pour la solution de la suppression 'by the code' (à la main donc) je me suis dit qu'il valait mieux ne pas surcharger les contraintes et les triggers dans la base de données (genre on ne l'utilise que pour read/write tout bête). ça fera un bout de code en plus (mais en c# c'est tellement agréable!) Si j'étais un mordu d'SQL j'aurais fait l'autre solution, qui a mon avis est le cas le plus sûr pour des cas complexes (genre plusieurs applications de langages différents utilisent la base je sais pas moi Sur ce.. Bonne fin de journée. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com