![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 小米乙 ![]()
![]() ![]() |
而在執行時,會下[SqlTransaction],想問一下,如果當中有一個資料表[B]無法更新時,另一張資料表[A]是不是會因為SqlTransaction的關係而不執行(Rollback)。 |
1樓
最有價值解答
topcat ![]() ![]() |
當Transaction中,出現問題
程式會觸發錯誤,跑到Exceptrion那段 執行Rollback,就會把該Transaction的所有更新還原 這是您要問的嗎? ^.^a
本篇文章回覆於2020-11-23 14:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
不錯的參考
topcat ![]() ![]() |
另外一個狀況
當您用多個SQL語法,一次去執行 語法與語法之間,應該要加上【;】來區隔 像這樣 ^_^
本篇文章回覆於2020-11-23 14:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
作者回應
小米乙 ![]() ![]() |
回喵大,對啊~~我想問的是這樣,感謝喵大~~^^
本篇文章回覆於2020-11-24 08:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
有一個簡化的作法,您可以查詢 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樓 |
有關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樓
作者回應
小米乙 ![]() ![]() |
非常無敵感謝二位先進解惑,又多知道了一些了~~^^
本篇文章回覆於2020-11-25 13:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |