IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[Connection DB] Bien gérer les connexions !


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut [Connection DB] Bien gérer les connexions !
    Bonjour,

    Je me posais la question sur quelle est la meilleure manière de gérer les connexions à la base.

    Vaut-il mieux faire comme je l'ai vu dans certains tutoriaux des classe Factory où on gère la connexion ?
    Est ce une bonne pratique d'utiliser pour cette classe le DP singleton ? (Je pense au cas ou on aurait une évolution un moment donné qui fait qu'une requête engendre une autre et que les deux doivent s'exécuter en parallèle, on serait obliger de refaire la logique ou je me trompe ?)

    Ou encore utiliser un Scope de connexion ?

    Ou encore avoir une classe avec les méthodes statiques qui vont bien ?

    Utilisez-vous Global.asax pour partager la connexion ?

    Ou encore vous préférez créer directement dans votre code la connexion ?

    Bien que cela dépend souvent de l'utilisation et le contexte, je suppose que y a des bonnes pratiques qui s'adaptent à la plupart des situations, si vous les connaissez n'hésiter à les faire partager.

    Merci à tous ceux qui me liront et ceux qui répondront.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Vu qu'il y a pas de réponse à ma première requête.

    Il est peut être plus approprié de vous donner un cas (qui pourrait peut être bientôt m'arriver)

    Dans mon architecture actuel, j'utilise une classe (Factory) donc laquelle je gère la connexion, cette classe applique le design pattern Singleton.

    Jusqu'ici, cette architecture répond parfaitement à mes besoins. Mais ça pourrait se corser bientôt.
    Supposant que je veuille remplir les données d'une équipe (dans ma base j'ai Une table équipe et une table joueur, l'objet équipe comporte une list<> de joueurs), si je veux remplir une liste d'équipe (disant pour le besoin d'un championnat), je dois alors :

    Dans ma logique (qui n'est peut être pas la bonne d'ailleurs) ce qu'il me faut faire c'est une requête pour récupérer les données d'une équipe, ensuite lancer une requête pour récupérer les joueurs d'une équipe et enfin ajouter l'équipe à la collection, de même pour les autres équipe.

    Ce qui m'oblige à avoir deux connexions (une pour équipe et une autre pour joueurs) car on ne peut utiliser dans une connexion qu'un seul DbDataReader

    Donc, ou je remets en question mon architecture ou ma logique car soit :

    - J'utilise un pool de connexion.
    - Soit je rempli les équipes (sans joueurs) et je ferme mon datareader. Ensuite je rempli les joueurs pour chaque équipes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach (Equipe equipe in equipes)
             remplirJoueur(Equipe);
    Soit y a une méthode secrète que je n'ai pas encore trouvé qui me permets de garder ma logique et mon architecture. Et dans ce cas je serais soulager de la connaitre.

    Merci aux âmes charitable qui pourront m'éclairer et atténuer mon ignorance.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu peux définir dans ta chaine de connexion qu'une requête peut renvoyer plusieurs resultsets. Ensuite il suffit de créer une dbcommand qui contient deux requêtes à la suite, le datareader obtenu pourra te servir pour les deux resultset retournés.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Tu peux définir dans ta chaine de connexion qu'une requête peut renvoyer plusieurs resultsets. Ensuite il suffit de créer une dbcommand qui contient deux requêtes à la suite, le datareader obtenu pourra te servir pour les deux resultset retournés.
    oui sauf que pour avoir les joueurs je dois savoir pour quel équipe, donc chaque résultat de la premiére requête conditionne une nouvelle requête (qui récup les joueurs). Ou peut être j'ai mal compris ta suggestion.

    Merci pour ta réponse en tt cas.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Pourquoi ne pas faire une seule requête qui renvoie les équipes et les joueurs ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Pourquoi ne pas faire une seule requête qui renvoie les équipes et les joueurs ?
    Comment tu voix la chose ?

    Je fais une jointure, avec pour chaque joueur d'une équipe une ligne avec la répétition des données de l'équipe :

    (equipe1, president1, stade1, joueur1, poste1, age1)
    (equipe1, president1, stade1, joueur2, poste2,age2)
    ...

    Puis pour remplir je dois tester pour savoir quand j'arrête de remplir une équipe et passer au suivante ?

    C'est ça ou je me trompe ?

    Merci encore pour ta réponse.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

Discussions similaires

  1. Comment bien gérer les variables de session ?
    Par rad_hass dans le forum ASP.NET
    Réponses: 4
    Dernier message: 29/04/2008, 10h14
  2. Réponses: 3
    Dernier message: 29/05/2007, 16h50
  3. [Include/Require] Comment bien gérer les chemins ?
    Par Wookai dans le forum Langage
    Réponses: 1
    Dernier message: 11/04/2007, 09h11
  4. Comment bien gérer les utilisateurs multiples
    Par Vesta dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/06/2006, 08h48
  5. [JDesktopPane] Comment bien gérer les JInternalFrame ?
    Par calogerogigante dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 05/04/2006, 12h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo