Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Futur Membre du Club
    Profil pro Danie Marie-Sainte
    Inscrit en
    novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Nom : Danie Marie-Sainte

    Informations forums :
    Inscription : novembre 2009
    Messages : 51
    Points : 19
    Points
    19

    Par défaut Conseil programmation - Accès aux données avec EF

    Bonjour à tous,

    Je suis en train de faire la couche d'accès aux données d'une application client lourd. Cette couche sera, plus tard, utilisée pour une application Web. Mon collègue (qui est actuellement en vacances) m'a dit que pour le Web, la connexion à la BDD doit tout le temps être fermée. Donc pour tout accès à la BDD on ouvre une connexion, on fait sa requête et on referme.
    Moi, je dois récupérer une foule d'informations dans la BDD (donc plusieurs requêtes de selection) pour construire un Objet.
    Ma question est donc la suivante : Est-ce qu'il vaut mieux ouvrir et fermer la connexion à chaque requete de sélection? ou bien j'ouvre, je récupère tout ce que j'ai à récupérer, puis je ferme? Qu'est-ce qui influence votre choix?
    Autre question : Est-ce que cette façon de faire est bonne :
    Code c# :
    1
    2
    3
    4
    using(Context Entity)
    {
        Récupération des données via le Context
    }

    Enfin, si quelqu'un a des exemples de code je suis preneuse.

    Merci

  2. #2
    Modérateur
    Avatar de Er3van
    Homme Profil pro Clément Lehalle
    Architecte Logiciel
    Inscrit en
    avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Nom : Homme Clément Lehalle
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2008
    Messages : 1 430
    Points : 2 161
    Points
    2 161

    Par défaut

    A priori, c'est EntityFramework qui se chargera de cela pour toi, tu ne devrais pas à avoir à t'en préoccuper.

    Pour répondre à la question malgré tout, le plus logique serait d'ouvrir une connexion, de faire tes requêtes, puis de fermer la connexion.

    Et oui, cette méthode est la bonne, et pour les exemples je te conseille de lire le billet de la MSDN. Si tu utilises EF 4.0, tu peux jeter un oeil dans "Past Versions" et voir les vidéos de Julia Lerman, mais elles sont en anglais.
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  3. #3
    Rédacteur/Modérateur

    Avatar de Nathanael Marchand
    Homme Profil pro Nathanael Marchand
    Expert .Net So@t
    Inscrit en
    octobre 2008
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Nom : Homme Nathanael Marchand
    Âge : 28
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : octobre 2008
    Messages : 3 612
    Points : 7 302
    Points
    7 302

    Par défaut

    Je tiens à dire quelque chose! Ouvrir et fermer une connection est très couteux. Ceci dit, c'est pas pour autant qu'il faut avoir qu'une connection partagé par tous le monde et qui dure indéfiniment. Il est généralement d'usage dans une application web d'avoir une connection par requête utilisateur (un GET sur une page). Pour un client lourd, c'est une connection par fenêtre. Après, ca se nuance par projet.
    Après pourquoi ton collègue n'a pas des perfs dégueulasse, c'est que justement, les fournisseurs de composants d'accès aux données ont créé le concept de Connection Pool. Grosso modo, même si tu fermes une connection dans ton code, elle n'est pas effectivement fermée et peut être réutilisée si une autre requête SQL en a besoin. Ca permet d'économiser du temps.
    Tu peux t'amuser à désactiver le Connection Pool et tu veras une nette dégradation des performances entre ouvrir une connection globale et ouvrir pour chaque requête.

  4. #4
    Futur Membre du Club
    Profil pro Danie Marie-Sainte
    Inscrit en
    novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Nom : Danie Marie-Sainte

    Informations forums :
    Inscription : novembre 2009
    Messages : 51
    Points : 19
    Points
    19

    Par défaut

    Merci à vous pour vos conseils.
    Je vais donc récupérer toutes mes données avec la même conexion.
    Merci aussi pour le lien avec les video. Je vais me débrouiller même si c'est en anglais, il faut vraiment que je me documente sur EF ...

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •