请考虑以下方法。
如果我们调用
(或者我是否严重误解了什么?)
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()
的后续交互是否在DoA()
的事务上下文中运行?DoC()
是否在DoA()
和DoB()
的事务上下文中都运行?(或者我是否严重误解了什么?)
DoC()
的工作是在DoB()
的事务块中运行吗?(而DoB()
又嵌套在DoA()
的事务中。) - svidgen