如何对两个表使用事务?
例如,我们有两张表(主表和明细表),当我在主表中插入一条记录时,可能会使用 for 循环(多条记录)插入一些详细记录。我需要按时控制两张交易表。
在连接上使用事务:
IDbConnection someConnection = new ....
var transaction = someConnection.BeginTransaction(TransactionScope.Serializable);
try
{
    IDbCommand cmd = someConnection.GetCommand();
    cmd.Transaction = transaction;
    ...
    cmd.ExecuteNonQuery();
    foreach(var data in subdata)
    {
        IDbCommand subcmd = someConnection.GetCommand();
        subcmd.Transaction = transaction;
        ...
        subcmd.ExecuteNonQuery();
    }
    ...
    transaction.Commit();
}
catch(Exception e)
{
    transaction.Rollback();
}
On Commit(),将写入所有数据。On Rollback(),不会写入单个数据行。因此,如果在写入子数据时发生了一些事情,您可以回滚整个事务并且也不向main表detail数据写入。
您可以使用
var transaction = sqlConnection.BeginTransaction(); 
方法,用于启动事务,然后执行查询以插入所需的表,然后调用transaction.Commit();,如果出现异常,调用transaction.RollBack();
考虑到 sqlConnection 是您的数据库连接变量