いくつかのコントロールをバインドしているデータ アクセス レイヤーがあります。現在、私は次のようなものを持っています
public List<Race> GetRaces()
{
List<Race> raceList = new List<Race>();
using (var con = new SqlConnection(this.ConnectionString))
{
using (var cmd = new SqlCommand("spGetRace",con))
{
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Race r = new Race();
r.RaceId = Convert.ToInt32(rdr["raceId"]);
r.RaceDescription = rdr["RaceDescription"].ToString();
raceList.Add(r);
}
}
return raceList;
}
}
public List<Ses> GetSes()
{
List<Ses> sesList = new List<Ses>();
using (var con = new SqlConnection(this.ConnectionString))
{
using (var cmd = new SqlCommand("spGetSes",con))
{
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Ses s = new Ses();
s.SesId = Convert.ToInt32(rdr["SesId"]);
s.SesDescription = rdr["SesDescription"].ToString();
sesList.Add(s);
}
}
return sesList;
}
}
これは、プレゼンテーション層のドロップダウン リストにバインドされます。この ADO.NET コードの大部分を何度も入力する代わりに、この基本的なタイプのデータ アクセスに役立つリファクタリング手法は何ですか? SqlConnection、SqlCommand、およびカスタム タイプの 1 つをRace/Ses
パラメーターとしてリファクタリングすることで、これを行うことはできますか?