2011-11-25 68 views

回答

1

閱讀關於TransactionScope和System.Transactions的所有信息。

+0

我有我收集約300項。我應該向數據庫發出300個呼叫,全部在交易範圍下。我能以這種方式進行嗎? Ur評論? – Muthukumar

+1

是的,你可以。它會工作。如果你發現它的運行速度太慢,你可以考慮批量機制。通常對於300件物品是不值得麻煩的(除非你每秒插入300件物品......)。 – zmbq

+0

感謝你的建議。 – Muthukumar

1

根據你使用的是ADO.NET/PLIN SQL,你可以使用bulk插入,或者,如果你正在使用Linq-to-SQL,你可以嘗試使用LINQ Entity Data Reader來一次插入大量數據。

通過使用批量插入,每個批次都作爲一個事務複製到服務器。如果失敗,SQL Server提交或回滾每個批次的事務。

4

您需要使用您的SqlConnection對象的BeginTransaction方法創建交易。這將返回一個需要跟蹤的SqlTransaction對象。

當您的所有項目都已成功插入數據庫時​​,您將在事務對象上調用Commit。

如果在處理過程中遇到異常,則需要對事務對象調用Rollback。

粗略地講,代碼:

SqlConnection conn; 
// Create and open your connection here 

SqlTransaction trans = conn.BeginTransaction(); 
try { 
    // Perform your inserts 

    trans.Commit(); 
} catch(Exception ex) { 
    trans.Rollback(); 

    // Report the exception 
} 
相關問題