我有2个这样的方法,方法1调用方法2:
public void Method1(string connectionString)
{
var con = new SqlConnection(connectionString);
var transaction = con.BeginTransaction();
try
{
con.Open();
Method2(connectionString);
do sth that make errors bla bla...;
transaction.Commit();
con.Close();
}
catch
{
transaction.RollBack();
con.Close();
}
}
public void Method2(string connectionString)
{
var con = new SqlConnection(connectionString);
var transaction = con.BeginTransaction();
con.Open();
do sth that dont make errors bla bla...;
transaction.Commit();
con.Close();
}
我想知道如果Method2成功并Commit了Transaction,但是Method1出错并回滚了,Method2中的Transaction也会回滚吗?
谢谢!
我已经尝试过这个,但结果对我来说不够清楚,我仍然不明白在这种情况下交易是如何工作的,它是否被视为2个单独的交易?
不,在这种情况下Method2已经提交并且结束了,所以不会回滚。为此,您可以确保 Method1 和 Method2 位于同一上下文中(当前它们位于单独的上下文中)或者您可以使用 TransactionScope .