2008-10-09 66 views
5

我現在寫,這將需要多個插入,更新和刪除我的業務實體的應用程序。我正在使用TransactionScope類來保證所有的存儲過程都可以提交或回滾爲單個工作單元。.NET TransactionScope類和T-SQL TRAN提交和回滾

我的問題是,我必須也使用COMMIT TRAN和ROLLBACK TRAN是我的每一個存儲過程,如果我用我的.NET類庫TransactionScope類?

回答

2

ON 2005沒有必要,在2000年我會,另外,我通常把transactionscope放在一個「使用」塊。

有使用它時,在2000年及以上的VS 2005

here

感謝

+0

我正在使用SQL Server 2005.感謝您的信息 – 2008-10-09 23:58:14

0

您不應該需要 - 它應該在TransactionScope中處理。它確實取決於你正在做什麼以及你如何處理交易(顯式或隱式)更多HERE

+0

我只處理顯式事務。 – 2008-10-09 23:28:34

8

不,如果使用的TransactionScope網上交易不需要明確的交易一些性能問題 - 但是:重要您應該在連接字符串中設置Transaction Binding=Explicit Unbind;。完整的詳細信息是here,但除此之外,最後幾個操作可以回滾,最後幾個提交(或者說,在任何事務之外運行)。

1

如果您在TransactionScopeCommittableTransaction入伍那麼我強烈建議你做使用begin transactionSqlConnection.BeginTransaction明確地創建自己的本地事務。

TransactionScope/CommittableTransaction是一個不同的「家庭」,並從begin transaction/SqlTransaction

相互排斥的,所以我會賽義夫汗不同意。的確,System.Transactions在Sql 2000上有性能問題,所以最好使用SqlTransaction或begin transaction。但是,如果你這樣做,那麼你不應該使用TransactionScope/CommittableTransaction。

順便說一句,那馬克Gravell描述的行爲已經在.NET 4.0中改變。即使你不使用Explicit Unbind,也不可能讓一些命令回滾並且有一些提交。 (但是他是正確的,在舊版本中你應該使用Explicit Unbind)。