2013-10-23 42 views
1

如何使用两个表的交易?如何使用两个表的交易?

例如,我们有两个表(主要和详细),当我在主表中插入一条记录时,可以用for循环(多于一条记录)插入一些详细记录。我需要按时交易两张表。

+1

通常的评论如下。你有什么尝试?你在搜索什么? – Steve

回答

1

使用连接上一个交易:

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()上,不会写入单个数据行。因此,如果写入子数据时发生了某种情况,则可以回滚整个事务,也不会回到,也不会写入detail表数据。

0

您可以使用

var transaction = sqlConnection.BeginTransaction(); 

方法,用于启动一个事务,然后才能插入到所需的表,然后调用transaction.Commit();,并在例外的情况下,执行你的查询,请致电transaction.RollBack();

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