2012-08-28 24 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更轻,但处理开销更高,并且您的控制更少。

相关问题