p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre à l'essai
    Inscrit en
    novembre 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 60
    Points : 23
    Points
    23

    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# : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Architecte Logiciel
    Inscrit en
    avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

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

    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
    Expert .Net So@t
    Inscrit en
    octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : octobre 2008
    Messages : 3 615
    Points : 8 029
    Points
    8 029

    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
    Membre à l'essai
    Inscrit en
    novembre 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 60
    Points : 23
    Points
    23

    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.

Discussions similaires

  1. [Général] L'accès aux données avec Qt
    Par Alain Defrance dans le forum Bases de données
    Réponses: 7
    Dernier message: 18/09/2009, 15h56
  2. L'accès aux données avec Qt
    Par Alain Defrance dans le forum Qt
    Réponses: 7
    Dernier message: 18/09/2009, 15h56
  3. vitesse d'accès aux données avec une jointure
    Par Bibi218 dans le forum SQLite
    Réponses: 1
    Dernier message: 01/07/2009, 00h46
  4. Gérer l'accès aux données avec un Bindingsource
    Par soso78 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/04/2009, 23h23
  5. Réponses: 2
    Dernier message: 03/03/2008, 12h04

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