C# 如何使用dapper回滚事务

C# 如何使用dapper回滚事务,c#,.net,dapper,C#,.net,Dapper,我有这个: using (var con= new SqlConnection(ConfigurationManager.ConnectionStrings["sqlcon"].ConnectionString)) { try { // many transactions } catch

我有这个:

            using (var con= new SqlConnection(ConfigurationManager.ConnectionStrings["sqlcon"].ConnectionString))
            {
                try
                {
                  // many transactions
                }
                catch (Exception e)
                {
                    con.BeginTransaction().Rollback();
                }
            }
这能行吗是我的问题。。我知道另一种方法是创建事务,然后打开它,然后回滚。

您可以在using块中使用与SqlConnection的using块相同级别的变量

using (TransactionScope scope = new TransactionScope())
using (var con= new SqlConnection(ConfigurationManager.ConnectionStrings["sqlcon"].ConnectionString))
{
    try
    {
       // many transactions
       scope.Complete();
    }
    catch (Exception e)
    {
        // Not needed any rollback, if you don't call Complete
        // a rollback is automatic exiting from the using block
        // con.BeginTransaction().Rollback();
    }
}

Dapper扩展了DbConnection,因此使用标准事务对象没有问题,但它更麻烦。(当然,您需要在代码开头声明事务,并将其用于回滚或commit@NoviceDeveloper请注意,所有dapper操作都接受ado.net事务作为可选参数;如果使用ado.net事务,请确保将其包含在calls@Steve标准的ado.net事务不是很简单吗htweight比环境事务更重要,如果环境事务中打开了多个连接,它将升级为分布式事务