以下のこの回答と、それがデリゲートでどのように機能するかを説明する助けを得ることができますか. ここからの答え: C# 抽象化とデータベース層
...DataReader を使用するという考えに行き詰まっている場合は、デリゲートをヘルパーに渡すことができます。デリゲートは、using ステートメント内で呼び出されます。
public string GetMySpecId(string dataId)
{
return _dbHelper.ExecuteQuery(
dr =>
{
if(dr.Read())
{
return dr[0].ToString();
}
// do whatever makes sense here.
},
@"select ""specId"" from ""MyTable"" where ""dataId"" = :dataId",
new SqlParameter("dataId", dataId));
return result.Rows[0][0].ToString();
}
Dapper のような軽量ツールを使用して、構文の一部を簡素化し、データ型へのマッピングを処理することもできます。(接続を開くなどの処理を行う必要があります。)