Il ya quelque temps, j'ai écrit un calque ORM pour mon application .net où toutes les lignes de base de données sont représentées par une sous-classe DatabaseRecord
. Il y a un certain nombre de méthodes comme Load()
, Save()
etc. Dans ma mise en œuvre initiale j'ai créé une connexion à la DB dans le constructeur de DatabaseRecord
par exemple.Frais généraux de création de SqlConnection dans C#
connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString
);
Je puis appeler Open()
et Close()
sur ce SqlConnection au début et à la fin de mes méthodes qui accèdent à la base de données. Cela m'a semblé (comme quelqu'un qui était familier avec la programmation mais nouveau pour C# et .net) pour être le moyen le plus efficace de faire les choses - avoir une connexion et l'ouvrir/fermer si nécessaire dans la classe.
Je viens en train de faire un peu de lecture bien et il semble que ce modèle est recommandé dans plusieurs endroits:
using (var connection = new SqlConnection(...)) {
connection.Open();
// Stuff with the connection
connection.Close();
}
Je peux voir pourquoi il est souhaitable - la connexion est automatiquement Dispose()
d même si la Ce que vous faites au milieu provoque une exception non interceptée. Je me demandais juste ce que les frais généraux sont pour appeler new SqlConnection()
potentiellement plusieurs fois comme ça.
La mise en commun des connexions est activée, j'imagine que les frais généraux sont minimes et la deuxième approche devrait être la meilleure pratique, mais je voulais simplement m'assurer que mes hypothèses étaient justes.
Merci pour tous les réponses incroyablement rapides! – vitch