none
請問如何結合transactionScope與sqlTransaction? RRS feed

  • 問題

  • 目前有兩組程式,交易分別用transactionScope(搭配TableAdapterManager.UpdateAll()),
    與sqlTransaction(搭配conn.BeginTransaction())撰寫,請問有把兩種交易結合在一起的方式嗎?
    也就是希望兩組程式可以一起commit或一起rollout.

    下面有三種方法,我查網路
    <方法一>建議這樣做的人比較多,但我不確定是否還可以使用TableAdapterManager.UpdateAll()來更新,
    <方法二>看來可行,但比較少人建議,是否真的可行?
    <方法三>我最希望的解法,請問有類似的解法嗎?

    <方法一>
    不用TransactionScope,將TableAdapter轉成SqlDataAdapter
    ,再將Connection與Transaction物件塞給SqlDataAdapter的Connection與Transation屬性替代

    <方法二>
    不用TransactionScope,直接將Transaction物件塞改TableAdapter的Transaction屬性替代

    <方法三>
    例如把sqlTransaction註冊到TransactionScope,或是TransactionScope裡面也可包含sqlTransaction?
    2012年7月28日 上午 07:25

解答

  • TransactionScope可以控制多資料庫異動, 如果程式中確實需要執行多資料庫異動, TransactionScope是無法被SqlTransaction取代的
    2012年7月31日 上午 05:41

所有回覆

  • 兩組程式是在同一個方法內嗎?

    2012年7月28日 上午 07:57
  • 不,若分為A(transactionscope)與B(sqltransaction)兩種,大部分都是在B程式中會呼叫A,

    B因為程式碼太多要翻修很困難,但用到A的程式碼比較少,

    所以要取消transactionscope全部改用sqltransaction也可以考慮,不過算下下策了

    我更希望是能找到同時兼容A與B的方法

    2012年7月28日 下午 01:26
  • TransactionScope可以控制多資料庫異動, 如果程式中確實需要執行多資料庫異動, TransactionScope是無法被SqlTransaction取代的
    2012年7月31日 上午 05:41