考慮這種情況;假設我有WPF窗口,它有四個對象綁定到其控件 (Schedule,Customer,Contract,ScheduleDetails和Signer),它們代表後端數據庫中的四個數據庫表。我希望當用戶請求保存他/她在原子操作中加入的信息時,換句話說,所有的保存操作都在一個事務中,以使所有操作成功或全部失敗。 我的問題是什麼是代表在這種情況下如何在交易中保存?
3
A
回答
4
事務操作的最有效的方式最有效是使用BeginTransaction
等您DbConnection
,但這並不方便,因爲你必須使用相同的連接,每個DbCommand
需要transaction設置等
的簡單是TransactionScope
,如果你是SQL-Server 2005或以上,你很少會注意到這一點,並BeginTransaction
之間顯著的性能差異:
using(var tran = new TransactionScope()) {
SaveA();
SaveB();
SaveC();
SaveD();
tran.Complete();
}
這並不重要,如果SaveA
等使用相同的連接,如SqlConnection
將自動登記到一個TransactionScope
。
或者,讓一個ORM爲你處理;大多數會創建交易以保存一組更改。
有一點要注意; TransactionScope
依賴於可能不適用於所有客戶端的服務(DTC)(因爲您提到的是客戶端的WPF)。
相關問題
- 1. 如何保存或存儲SKPayment交易?
- 2. Django的:保存交易
- 3. 如何在一次交易中保存相關模型?
- 4. 如何在交易Yii 1 *中獲得保存的模型ID?
- 5. Ebean manyToMany沒有保存在交易
- 6. Django - 如何在保存表單時進行交易?
- 7. mongodb中的交易保證
- 8. 使用交易進行多次保存
- 9. Pimcore - 使用交易保存對象
- 10. 休眠保存方法 - 交易
- 11. mysql,vb.net - 保存交易不起作用
- 12. Django - 回滾保存與交易原子
- 13. 交易如何保持安全
- 14. 在交易中包裝交易存儲過程
- 15. 在C#中的交易中的交易#
- 16. 如何在Subversion中保存提交?
- 17. 如何把在交易
- 18. 如何,而在交易
- 19. Yodlee-交易存儲
- 20. 如何保持交易的運行餘額並獲得交易後的金額
- 21. 如何在knex中實現交易?
- 22. 如何在VoltDB中實現交易?
- 23. 如何在Access中實現交易?
- 24. 如何在liferay中實現交易?
- 25. 如何在碎片中進行交易?
- 26. 如何在雪花中使用交易?
- 27. 如何在'developer.paypal.com'中顯示交易
- 28. 如何在Authorize.net中退款交易?
- 29. Firebase:客戶交易和雲功能交易存在差異嗎?
- 30. 如何處理從交易表中刪除交易
如果您使用TransactionScope,請確保您的目標機器具有運行的DTC - 分佈式事務處理協調器服務,否則您將收到異常。 – 2009-12-31 13:29:45
@Chris - 我剛剛編輯完畢;-p – 2009-12-31 13:30:27
@Mark,謝謝。但是DTC和Transaction類之間有一個關係 - 我不記得什麼時候談到圖片 - 但是我想避免使用DTC的開銷,儘管我喜歡Transaction類的簡單形式。 DTC交易有沒有辦法入伍? – 2009-12-31 13:34:36