49

Dapperで遊んでみました。これまでのところ、私はそれが大好きです。dapperは動作しTransactionScopeませんか?TransactionScope.Complete電話をかけなかったとしても、変更はデータベースにコミットされていることに気づきました。TransactionScopeが現在サポートされていない場合、将来的にサポートする予定はありますか?そうでない場合は、従来のトランザクション管理(System.Transactions.Transaction)を使用する必要がありますか?

更新:TwitterでSamと話しました。動作するはずです。明日の朝(仕事中)に詳細を更新して、completeと呼ばなかった場合でも、変更がまだdbにコミットされている理由を誰かが理解できるかどうかを確認します。

4

1 に答える 1

97

それは完全に私のせいであり、transactionscopeを完全には理解していませんでした。トランザクションスコープ内で接続を開かない限り、接続はトランザクションスコープに自動的に参加しません。

自動入隊

  using (var scope = new TransactionScope())
  {
      con.Open();                                
      //update/delete/insert commands here
      ...
      scope.Complete();
  }

手動入隊

    con.Open();
    using (var scope = new TransactionScope())
    {
       con.EnlistTransaction(Transaction.Current);  
       //update/delte/insert statements here
       ...
       scope.Complete();
    }

詳細はここにあります:詳細

于 2011-07-29T14:23:43.953 に答える