台灣最大程式設計社群網站
線上人數
1828
 
會員總數:246570
討論主題:190029
歡迎您免費加入會員
討論區列表 >> ASP.NET >> C#執行資料更新問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
C#執行資料更新問題
價值 : 100 QP  點閱數:1329 回應數:6
樓主

小米乙
門外漢
0 203
2772 415
發送站內信

捐贈 VP 給 小米乙
想請教個問題,我在程式中將進行兩張資料表[A]、[B]的更新,
而在執行時,會下[SqlTransaction],想問一下,如果當中有一個資料表[B]無法更新時,另一張資料表[A]是不是會因為SqlTransaction的關係而不執行(Rollback)。



搜尋相關Tags的文章: [ SqlTransaction ] , [ Transaction ] ,
本篇文章發表於2020-11-23 08:47
1樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
當Transaction中,出現問題
程式會觸發錯誤,跑到Exceptrion那段
執行Rollback,就會把該Transaction的所有更新還原

這是您要問的嗎?
^.^a
本篇文章回覆於2020-11-23 14:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不錯的參考

topcat
捐贈 VP 給 topcat 檢舉此回應
另外一個狀況
當您用多個SQL語法,一次去執行
語法與語法之間,應該要加上【;】來區隔

像這樣

^_^
本篇文章回覆於2020-11-23 14:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

小米乙
捐贈 VP 給 小米乙 檢舉此回應
回喵大,對啊~~我想問的是這樣,感謝喵大~~^^
本篇文章回覆於2020-11-24 08:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

MIS2000 Lab
檢舉此回應
有一個簡化的作法,您可以查詢 TransactionScope
從以前的 .NET 4.x版到現在 .NET 5.0都可以用,比較簡單。

https://docs.microsoft.com/zh-tw/dotnet/api/system.transactions.transactionscope?view=net-5.0

本篇文章回覆於2020-11-24 11:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
有關TransactionScope
小喵以前有兩篇,提供您參考

確保交易的新利器(TransactionScope)初體驗-Part 1(注意Scope.Complete的位置)

確保交易的新利器(TransactionScope)初體驗-Part 2(物件維護的交易確保)

小喵個人也是很推TransactionScope
您可以依據實際上的商業邏輯,將每個要處理的寫在不同的物件,不同的function中
例如,
販賣東西,您可以呼叫訂單的物件,產生訂單資料(至少就有OrderHead, OrderDetail兩個資料表)
同時去呼叫庫存管理的物件,將相關的購買商品,調整數量,並且產生出庫傳票相關資料(至少更動商品庫存、出庫傳票多個資料表)

在撰寫物件時,可以先不用考慮Transaction,並且各寫各的商業邏輯
在正式要呼叫時,啟用TransactionScope,然後去呼叫啟動多個物件的多個function,都包在一個TransactionScope
這樣,這些物件的這些function,就會被包成一個Transaction中,全有或全無

^_^
本篇文章回覆於2020-11-24 15:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

小米乙
捐贈 VP 給 小米乙 檢舉此回應
非常無敵感謝二位先進解惑,又多知道了一些了~~^^
本篇文章回覆於2020-11-25 13:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.