Microsoft.Practices.EnterpriseLibrary.Data:在一个事务中执行多个语句

Mic*_*hel 5 c# ado.net enterprise-library

我最近开始使用现有项目,它与Microsoft.Practices.EnterpriseLibrary.Data对象一起使用.

现在我想在一个事务中执行多个存储过程(1:n插入必须全部失败或成功)

但我不知道如何......

谁能帮我吗?

在这个项目中执行sp的典型代码如下所示:

Database oDatabase = DatabaseFactory.CreateDatabase(CONNECTION_STRING_KEY);
DbCommand oDbCommand = oDatabase.GetStoredProcCommand("upCustomer_Insert");

Int32 iCustomerKey = 0;
oDatabase.AddInParameter(oDbCommand, "Firstname", DbType.String, p_oCustomer.FirstName);
oDatabase.AddInParameter(oDbCommand, "Lastname", DbType.String, p_oCustomer.LastName);

oDatabase.ExecuteNonQuery(oDbCommand);
Run Code Online (Sandbox Code Playgroud)

RPM*_*984 6

你需要使用DbTransaction:

using (DbConnection connection = db.CreateConnection())
{
    connection.Open();
    DbTransaction transaction = connection.BeginTransaction();

    try
    {
        db.ExecuteNonQuery(transaction, sp1);
        db.ExecuteNonQuery(transaction, sp2);
        transaction.Commit();
    }
    catch
    {
        transaction.Rollback();
        throw;
    }
}
Run Code Online (Sandbox Code Playgroud)

注意ExecuteNonQuery的第一个参数是要使用的事务.

更多信息在这里.