1

いくつかのコントロールをバインドしているデータ アクセス レイヤーがあります。現在、私は次のようなものを持っています

   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パラメーターとしてリファクタリングすることで、これを行うことはできますか?

4

1 に答える 1