2013-10-23 41 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是你的數據庫連接變量