以下の方法を検討してください。
DoA()
{
using (TransactionScope scope = new TransactionScope)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(query, connection);
command.ExecuteNonReader();
DoB();
scope.Complete();
}
}
}
DoB()
{
using (TransactionScope scope = new TransactionScope)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(query, connection);
command.ExecuteNonReader();
DoC();
scope.Complete();
}
}
}
DoC()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(query, connection);
command.ExecuteNonReader();
}
}
を呼び出した場合DoA()
、その後の対話はSQL Server に関連するため、 のトランザクションのコンテキストで実行されDoB()
ますか? DoC() はとの両方のトランザクションのコンテキストで実行されますか?DoC()
DoA()
DoA()
DoB()
(または、私は何かをひどく誤解していますか?)