C# 如何重置Transactionscope并在之后提交?

C# 如何重置Transactionscope并在之后提交?,c#,transactionscope,C#,Transactionscope,我怎样才能做到这一点?这是可能的还是应该声明另一个事务范围 using (TransactionScope scope = new TransactionScope()) { using (SqlConnection connection1 = new SqlConnection(connectString1)) { connection1.Open(); S

我怎样才能做到这一点?这是可能的还是应该声明另一个事务范围

    using (TransactionScope scope = new TransactionScope())
        {
            using (SqlConnection connection1 = new SqlConnection(connectString1))
            {
                connection1.Open();

                SqlCommand command1 = new SqlCommand(NomProcedure, connection1);
                command1.CommandType = CommandType.StoredProcedure;
                command1.ExecuteNonQuery();

                //Rollback transaction Here 

                SqlCommand command2 = new SqlCommand("dbo.AddHistory", connection1);
                command2.CommandType = CommandType.StoredProcedure;
                command2.ExecuteNonQuery();

            }

            scope.Complete();
        }

我只想从您开始事务的那一刻起提交第二个命令,直到您完成事务,对数据的任何更改都不会得到确认

如果要回滚,只需不调用
Complete()

这可以通过在事务位于
try/catch
(如建议)内时抛出异常来实现,或者通过有条件地调用
Complete
if


如果您希望在仍然处于回滚事务中的情况下执行该命令,则应如下所示:

using (SqlConnection connection1 = new SqlConnection(connectString1))
{
    connection1.Open();
    using (TransactionScope scope = new TransactionScope())
    {
        ... // some commands

        // if you need to rollback and execute other command
        if(blabla)
        {
            scope.Dispose(); // without this further command is also rolled back
            ... // command
        }
        else
            scope.Complete(); // everything is fine, confirm transaction
    }
}

从您开始交易的那一刻起,直到您完成交易,对数据的任何更改都不会得到确认

如果要回滚,只需不调用
Complete()

这可以通过在事务位于
try/catch
(如建议)内时抛出异常来实现,或者通过有条件地调用
Complete
if


如果您希望在仍然处于回滚事务中的情况下执行该命令,则应如下所示:

using (SqlConnection connection1 = new SqlConnection(connectString1))
{
    connection1.Open();
    using (TransactionScope scope = new TransactionScope())
    {
        ... // some commands

        // if you need to rollback and execute other command
        if(blabla)
        {
            scope.Dispose(); // without this further command is also rolled back
            ... // command
        }
        else
            scope.Complete(); // everything is fine, confirm transaction
    }
}

重点是什么?我想回滚第一个命令并提交第二个命令重点是什么?你知道交易的意义吗?如果最终结果是一个操作,那么不要执行第一个操作,也不要使用任何事务查看使用模式。您只需处置
TransactionScope
即可回滚它,而无需调用
Complete
(否则将被确认)。@Sinatr事务作用域中有两个命令,我要提交最后一个命令,我不能同时使用transactionscope和commit有什么意义?我想回滚第一个命令并提交第二个命令有什么意义?你知道交易的意义吗?如果最终结果是一个操作,那么不要执行第一个操作,也不要使用任何事务查看使用模式。您只需释放
TransactionScope
即可回滚它,而无需调用
Complete
(否则将被确认)。@Sinatr事务作用域中有两个命令,我想提交最后一个,我不能同时使用TransactionScope和commit