ORM を使用するように指示する代わりに、私がどのように ORM を使用するか (記憶から入力) を示します (そして、私はダウンモッドされ、炎上し、他に何を知っているかはわかりません):
私はあなたが私と同じことをしているのを見ます。
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();
}
そして、私は似たようなことをします。新しい SqlCommand、新しい SqlConnection を作成していて、共通の SqlConnectionString (中央の場所からリロードできるようにする必要がありますね?) を使用していることに注意してください。
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;
}
しかし、おそらくORMの方が優れているでしょう。私たちの状況にうまく機能すると感じるものではありません。