2009-08-15 11 views
27

Lorsque j'explique mon objet "Entities" dans Entity Framework, et que je fais quelques requêtes en utilisant cet objet Entities, que deviennent les connexions?Quand Entity Framework ouvre-t-il et ferme-t-il les connexions à la base de données?

  • Est-ce qu'il ouvre une connexion lorsque j'explique l'objet, et le ferme quand je l'élimine?
  • Ou ouvre-t-il et ferme-t-il une connexion pour chaque requête que j'exécute?

Dans les deux cas, est-il possible de le changer afin qu'il fasse l'autre chose?

+2

Wow @ pb2q était une modification très importante pour une question vieille de 6 ans! Bien fait! –

+0

dMagiola: pas de problème. Heureux d'aider avec toutes les améliorations: importantes ou non, anciennes ou nouvelles. Continuez à demander à mon pote! – pb2q

Répondre

3

Le comportement a quelque peu changé dans EF6, vous permettant de passer des connexions ouvertes ou d'ouvrir vous-même la connexion EF ultérieurement. Découvrez https://msdn.microsoft.com/en-us/library/dn456849(v=vs.113).aspx

+0

Merci beaucoup pour le lien - est-il impossible de déclarer une connexion ouverte via la clause 'using' de C#? par exemple. 'using (var conn = openAConnection())'. Le lien que vous partagez montre une ouverture manuelle de la connexion qui se ferme lorsque le contexte lié est éliminé, ce qui semble si peu intuitif et hacky. – aaaaaa

+0

@aaaaaa - peut-être que vous regardez l'EF5 et l'exemple précédent? Dans le deuxième exemple de code est la clause 'using 'comme vous voulez. Notez que vous ne devez vous en préoccuper que si vous voulez réellement faire quelque chose manuellement avec la connexion, par ex. exécuter des instructions en dehors de EF. Si vous n'en avez pas besoin, vous n'avez pas besoin de penser à ouvrir et fermer la connexion. – Rory

+0

"Comportement dans ES6 et versions futures": 'conn.Open();'. C'est la ligne qui m'irrite. Et oui j'en ai besoin apparemment pour obtenir plusieurs ensembles de résultats à partir d'une procédure stockée (en essayant de garder les requêtes db à une par vue) – aaaaaa