web-dev-qa-db-ja.com

Dapper&TransactionScope?

私はDapperをいじり始めました。これまでのところ、私はそれが大好きです。 dapperはTransactionScopeでは機能しませんか?私がTransactionScope.Completeを呼び出さなくても、変更がデータベースにコミットされていることに気付きました。 TransactionScopeが現在サポートされていない場合、将来的にそれをサポートする計画はありますか?そうでない場合は、従来のトランザクション管理(System.Transactions.Transaction)を使用する必要がありますか?

更新:私はツイッターでサムと話しました。うまくいくはずです。明日の朝(仕事中)に詳細を更新して、completeを呼び出さなかった場合でも、変更がまだdbにコミットされている理由を誰かが理解できるかどうかを確認します。

46
coding4fun

それは完全に私のせいであり、transactionscopeを完全に理解していませんでした。 transactionscope内で接続を開かない限り、接続はtransactionscopeに自動的に登録されません。

自動登録

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

手動登録

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

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

88
coding4fun