Au lieu de vous dire d'utiliser un ORM, je vais vous montrer comment je le fais (tapé de la mémoire) (et je vais être downmodded et flamebaited et qui sait quoi d'autre):
Je vois que vous faites ce que je fais, ce qui est à savoir:
SqlDataReader myReader = null;
SqlCommand SQLcmd = new SqlCommand();
SqlConnection SQLConn = new SqlConnection();
String SQLStatement = "Select this 'nd That";
SQLConn.ConnectionString = SQLConnectionString;
SQLConn.Open();
SQLcmd.Connection = SQLConn;
SQLcmd.CommandText = SQLStatement;
myReader = SQLcmd.ExecuteReader();
while (myReader.Read())
{
//Do some awesome
}
SQLConn.Close();
}
Et donc je fais quelque chose de similaire.Notez que vous créez de nouvelles SqlCommand, new SqlConnection, et que vous utilisez un sqlConnectionString commun donc je fais ce (que vous devez être en mesure de recharger à partir d'un lieu central, yah?):
public class Global{
public string ConnectionString {get;set;}
public Global(){
ConnectionString = //load from wherever, this allows me to reload it later, via API? ;)
}
public SqlCommandFactory(string sprocName, SqlConnection con){
return new SqlCommand{
CommandText = sprocName,
Connection = con,
CommandTimeout = 0,
ConnectionTimeout = 0,
CommandType = StoredProcedure
};
}
}
//in my other class that uses this code:
public List<string> /* for simplicity sake, strigns */ GetListOfStringsFromDatabase(){
List<string> returnValue = new List<string>();
// use of using ensures that I don't forget to clean something up here!!!!
using (SqlConnection con = new SqlConnection(Global.ConnectionString)) {
SqlCommand cmd = Global.SqlCommandFactory("mysproc", con);
cmd.Parameters.Add("@param1", SqlDbType.VarChar).Value = "somestring";
con.Open();
using (SqlDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
returnResult.Add(reader[0].ToString());
}
}
}
return returnValue;
}
Mais l'ORM serait probablement mieux. Juste pas quelque chose que nous ressentons fonctionne bien pour notre situation.
Oui, LINQ2SQL ou Entity Framework. Premier coup sur Google devrait vous aider à démarrer. –
Ce code peut facilement être DRYd, vous n'avez donc qu'à l'écrire une seule fois. Mais comme d'autres l'ont dit, le choix populaire de nos jours est EF. – bzlm
Avez-vous déjà résolu ce problème avec succès? Avez-vous encore besoin d'aide pour cela? – jcolebrand