Précédent   Forum des professionnels en informatique > Dotnet > Accès aux données > Linq
Linq Forum d'entraide sur la manipulation de données avec Linq
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2012, 15h40   #1
Invité régulier
 
Homme slim Ayeche
Ingénieur software (débutant)
Inscription : mars 2010
Messages : 25
Détails du profil
Informations personnelles :
Nom : Homme slim Ayeche
Âge : 25
Localisation : Tunisie

Informations professionnelles :
Activité : Ingénieur software (débutant)

Informations forums :
Inscription : mars 2010
Messages : 25
Points : 8
Points : 8
Par défaut Linq To Sql : Généralité

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)
Slim_X est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 19h29   #2
Membre Expert
 
Avatar de GuruuMeditation
 
Homme Olivier Matis
Software Architect
Inscription : octobre 2010
Messages : 769
Détails du profil
Informations personnelles :
Nom : Homme Olivier Matis
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Software Architect
Secteur : Conseil

Informations forums :
Inscription : octobre 2010
Messages : 769
Points : 1 589
Points : 1 589
Envoyer un message via MSN à GuruuMeditation
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)
GuruuMeditation est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 03/01/2012, 13h29   #3
Rédacteur/Modérateur
 
Avatar de Nathanael Marchand
 
Homme Nathanael Marchand
Expert .Net So@t
Inscription : octobre 2008
Messages : 3 059
Détails du profil
Informations personnelles :
Nom : Homme Nathanael Marchand
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Expert .Net So@t
Secteur : Conseil

Informations forums :
Inscription : octobre 2008
Messages : 3 059
Points : 6 831
Points : 6 831
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é poubelle!
Retrouvez moi sur :
Mon Espace Developpez.com------------------------------- Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code---------------------------- Twitter: NatMarchand
Ma société: So@t

Jeux multi-écrans: Envolez-vous avec Kinect, Silverlight et WP7 aux Microsoft Tech'Days 2012
Nathanael Marchand est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 04/01/2012, 19h12   #4
Invité régulier
 
Homme slim Ayeche
Ingénieur software (débutant)
Inscription : mars 2010
Messages : 25
Détails du profil
Informations personnelles :
Nom : Homme slim Ayeche
Âge : 25
Localisation : Tunisie

Informations professionnelles :
Activité : Ingénieur software (débutant)

Informations forums :
Inscription : mars 2010
Messages : 25
Points : 8
Points : 8
Par défaut Lu

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 ... soyez créatifs dans l'imagination des problèmes )

Sur ce.. Bonne fin de journée.
Slim_X est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h41.


 
 
 
 
Partenaires

Hébergement Web