このヘルパー メソッドをこのように書いても安全ですか? 常に接続を閉じますか?すべてがうまくいけば理解できますが、 ExecuteReader がスローされても接続を閉じますか?
public static IEnumerable<DbDataRecord> ExecuteSelect(string commandText, DbConnection conn)
{
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = commandText;
conn.Open();
using (DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
foreach (DbDataRecord record in reader) { yield return record; }
}
}
}