Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > Entity Framework
Entity Framework Forum d'entraide sur le développement avec le modèle d'accès aux données Entity Framework de Microsoft.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/08/2012, 14h26   #1
Dan972
Futur Membre du Club
 
Danie Marie-Sainte
Inscription : novembre 2009
Messages : 42
Détails du profil
Informations personnelles :
Nom : Danie Marie-Sainte

Informations forums :
Inscription : novembre 2009
Messages : 42
Points : 18
Points : 18
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
Dan972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2012, 17h13   #2
Er3van
Modérateur
 
Avatar de Er3van
 
Homme Clément Lehalle
Architecte Logiciel
Inscription : avril 2008
Messages : 1 426
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 426
Points : 2 377
Points : 2 377
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 --
Er3van est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2012, 17h22   #3
Nathanael Marchand
Rédacteur/Modérateur

 
Avatar de Nathanael Marchand
 
Homme Nathanael Marchand
Expert .Net So@t
Inscription : octobre 2008
Messages : 3 520
Détails du profil
Informations personnelles :
Nom : Homme Nathanael Marchand
Âge : 26
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : octobre 2008
Messages : 3 520
Points : 7 962
Points : 7 962
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.
Nathanael Marchand est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2012, 08h55   #4
Dan972
Futur Membre du Club
 
Danie Marie-Sainte
Inscription : novembre 2009
Messages : 42
Détails du profil
Informations personnelles :
Nom : Danie Marie-Sainte

Informations forums :
Inscription : novembre 2009
Messages : 42
Points : 18
Points : 18
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 ...
Dan972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h37.


 
 
 
 
Partenaires

Hébergement Web