Aşağıdaki ekleme ve silme işlemlerinin tamamen çalıştığından veya tamamen çalışmadığından emin olmaya çalışıyorum. Bağlantı neslimin, işlem kapsamım dışında,% 100 emin olmadığına inanıyorum.TransactionScope çalışıyor görünüyor
Bu kodun amacım gibi çalışmadığını biliyorum. İlk kısımdan sonra (insert çalışır) ve daha sonra bir mola noktasında sona erdirerek iptal ediyorum, asla kapsamı tamamlamamış olsa bile satırlar gerçekten eklenir.
Lütfen buradaki düşünce ve mantığımdaki kusuru belirtin.
sqlConnection.Open();
int numFound = 1;
int max = 99;
int iteration = 0;
while (iteration < max && numFound > 0)
{
iteration++;
var ids = new List<int>();
using (var sqlCommand0 = new SqlCommand(sql0, sqlConnection))
{
using (SqlDataReader reader1 = sqlCommand0.ExecuteReader())
{
while (reader1.Read())
{
ids.Add(reader1.GetInt32(0));
}
}
}
numFound = ids.Count;
if (numFound > 0)
{
using (var scope = new TransactionScope())
{
string whereClause = $"WHERE Id IN ({string.Join(",", ids)})";
string sql1 = string.Format(sqlTemplate1, whereClause);
using (var sqlCommand1 = new SqlCommand(sql1, sqlConnection))
{
sqlCommand1.ExecuteNonQuery();
}
// BREAK POINT HERE - ABORTED PROGRAM AND sql1 had been committed.
var sql2 = "DELETE FROM SendGridEventRaw " + whereClause;
using (var sqlCommand2 = new SqlCommand(sql2, sqlConnection))
{
sqlCommand2.ExecuteNonQuery();
}
scope.Complete();
total += numFound;
Console.WriteLine("deleted: " + whereClause);
}
}
}
}