如果外层事务回滚,事务内事务会回滚吗?

问题描述 投票:0回答:1

我有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个单独的交易?

c# entity-framework .net-core transactions
1个回答
0
投票

不,在这种情况下Method2已经提交并且结束了,所以不会回滚。为此,您可以确保 Method1 和 Method2 位于同一上下文中(当前它们位于单独的上下文中)或者您可以使用 TransactionScope .

© www.soinside.com 2019 - 2024. All rights reserved.