Non, ce n'est pas sûr, la coulée est jamais à l'abri et il peut sauter à tout moment pendant que votre application est en cours d'exécution. Alors que SqlConnection
dérive en effet de DbConnection
vous n'êtes pas garanti que database.CreateConnection()
renverra un SqlConnection
car cela pourrait être paramétré dans le fichier de configuration. Aussi pourquoi avez-vous besoin de lancer à SqlConnection
? Il est toujours préférable de travailler avec des classes plus élevées dans la hiérarchie pour éviter de coupler votre code avec une implémentation spécifique qui rendra votre code impossible à tester de manière isolée.
Alors que la EnterpriseLibrary fait un bon travail décent pour garder les choses abstraites, vous tuez tout avec cette distribution. Vous devez également vous assurer que les ressources jetables sont toujours correctement éliminées. Que diriez-vous à la place:
Database database = DatabaseFactory.CreateDatabase("connection string");
using (var conn = database.CreateConnection())
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT id FROM foo";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// TODO: work with the results here
}
}
}
De cette façon, votre code est moins fragile aux changements de base de données dans le fichier de configuration. Bien sûr, vous avez toujours ce code en dur et il y a des ORM qui s'occuperont de cette situation. Ils vous permettront également de vous concentrer sur le domaine réel de votre application au lieu de perdre du temps à écrire des requêtes SQL et à passer d'un fournisseur de base de données à un autre. Mais pour une application simple, c'est OK.
Il y a une méthode utilisée dans ce code qui nécessite SqlConnection comme paramètre – Darqer