C# 如何对两个表使用事务?

C# 如何对两个表使用事务?,c#,C#,如何对两个表使用事务 例如,我们有两个表(main和detail),当我在主表中插入一条记录时,可能会使用For循环详细插入一些记录(多条记录)。我需要控制两个表,并按时执行事务。在连接上使用事务: IDbConnection someConnection = new .... var transaction = someConnection.BeginTransaction(TransactionScope.Serializable); try { IDbCommand cmd =

如何对两个表使用事务


例如,我们有两个表(main和detail),当我在主表中插入一条记录时,可能会使用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();
}
Commit()
上,将写入所有数据。在
Rollback()
上,不会写入单个数据行。因此,如果在写入子数据时发生了什么情况,您可以回滚整个事务,也可以回滚到
中,也可以回滚到写入的
详细
表数据中。

您可以使用

var transaction = sqlConnection.BeginTransaction(); 
方法,用于启动事务,然后执行查询以插入到所需的表中,然后调用
transaction.Commit(),如果出现异常,则调用
transaction.RollBack()


考虑到sqlConnection是您的数据库连接变量

通常的注释如下。你试过什么?你找了什么?