委托方法的 Dapper 事务

Dapper transaction for delegate method

我正在使用带有存储库模式的小巧玲珑。下面是单个存储库插入的代码。我需要使用事务调用服务层中的 2 个或更多存储库(在 savecustomer 方法中)。以下方法如何申请交易?

Protected void Execute(Action<IDbConnection> query) {
      using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDB"].ConnectionString))
        {
            query.Invoke(db);
        }
    }

还有我的简化调用站点:

public void SaveCustomer(CustomerDTO custDTO)
{
    Execute(db => db.Execute(saveCustSp, custDTO, CommandType.StoredProcedure));
}

如果您想将事务扩展到存储库之外,请考虑使用 UnitOfWork。详细代码可以在这里找到:

使用此代码,您可以跨多个存储库进行事务处理,如下所示:

using(DalSession dalSession = new DalSession())
{
    UnitOfWork unitOfWork = dalSession.UnitOfWork;
    unitOfWork.Begin();
    try
    {
        //Your database code here
        repository1.DoThis();
        repository2.DoThat();

        unitOfWork.Commit();
    }
    catch
    {
        unitOfWork.Rollback();
        throw;
    }
}

您还可以在此处使用 Dapper 获取通用存储库的示例代码: