I have the following code.
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString)
An alternative is not add MultipleActiveResultSets=True - there is a small performance penalty for doing so - and so something like this:
using (SqlConnection connection = new ...))
{
connection.Open();
SqlCommand select = new SqlCommand(...);
SqlDataReader reader = select.ExecuteReader();
var toInactivate = new List();
if (reader.HasRows)
{
while (reader.Read())
{
if (!currentPart.IsActive)
{
toInactivate.Add(reader["record"].ToString());
}
else
{
///blah
}
}
reader.Close();
}
SqlCommand update = new SqlCommand("UPDATE ... SET valid = 0, active = 0 " +
"WHERE record IN(" + string.Join(",", toInactivate) + ");", connection);
update.ExecuteNonQuery();
}
which has the advantage of updating all the required records in a single SQL statement.
And of course the whole thing would be so much neater using EF and Linq.