2012-08-28 35 views

回答

0

System.Transactions不是取代SqlTransaction

但是,只要考慮到單個數據庫,基於ADO.NET 2.0 System.Transactions的事務和常規SqlTransaction之間的最大區別就是「隔離級別」。然而,這是一個很大的區別。讓我馬上進入隔離級別,但在此之前您必須意識到,在Sql 2k中,事務將由MSDTC管理,即使您只有一個數據庫參與。對於Sql2k5,事務由LTM管理,直到連接到不同數據庫的第二個SqlConnection進入畫面。當這種情況發生時,交易從LTM上漲到MSDTC。

http://dotnetslackers.com/SQL/re-3463_SqlTransaction_vs_System_Transactions.aspx

+0

我在談論用SqlTransactions替換System.Transactions,所以擺脫了System.Transactions和MSDCT(反之亦然)。 – user1117513

+0

該文章仍然顯示了差異(他們是兩個不同的東西,他們的行爲不同) –

1

引用時引用,並通過引用的Massimiliano文章才7歲,因此只能是指.NET 2.0和SQL Server 2000和2005年。不過,我相信的要點仍然有效供以後版本。我很難找到直接適用於以後版本的任何更改的評論。

似乎在SQL Server 2008和更高版本中,針對單個數據庫的System.TransactionScope事務不太可能被提升爲DTC,而不是在舊版本中。

相關:SqlClient, System.Transactions, SQL Server 2008, and MARS

所以,這取決於你的SQL Server版本,你將有更多或更少的麻煩,使用System.Transactions的針對單個數據庫DTC。

System.Transactions的代碼比SqlTransactions更輕,但處理開銷更高,並且您的控制更少。

相關問題