J'ai un calque dal avec beaucoup de méthodes, tous appellent des procédures stockées, certaines listes de retour (donc avec une utilisation de SqlDataReader
), d'autres seulement une valeur spécifique.Refactor code en utilisant l'instruction
J'ai une méthode d'assistance qui crée le SqlCommand
:
protected SqlCommand CreateSprocCommand(string name, bool includeReturn, SqlDbType returnType)
{
SqlConnection con = new SqlConnection(this.ConnectionString);
SqlCommand com = new SqlCommand(name, con);
com.CommandType = System.Data.CommandType.StoredProcedure;
if (includeReturn)
com.Parameters.Add("ReturnValue", returnType).Direction = ParameterDirection.ReturnValue;
return com;
}
Maintenant, ma moyenne de regard du corps de la méthode (trop simplifiée) comme:
SqlCommand cmd = CreateSprocCommand("SomeSprocName"); //an override of the above mentioned method
try {
cmd.Connection.Open();
using (var reader = cmd.ExecuteReader()) {
//some code looping over the recors
}
//some more code to return whatever needs to be returned
}
finally {
cmd.Connection.Dispose();
}
est-il un moyen de factoriser cela, de sorte que Je ne vais pas perdre ma fonction d'aide (il fait un peu de travail autrement répétitif), et pourtant être en mesure d'utiliser using
?
Vraiment sympa! :-) –
Il est probablement logique d'ouvrir la connexion en tant qu'effet secondaire dans cette instance ... (puisqu'il est fermé en tant qu'effet secondaire) –
@ sambo99: Yup, va éditer. –