49

我刚开始玩 Dapper。到目前为止我喜欢它。dapper 不能用TransactionScope吗?我注意到即使我从不打电话TransactionScope.Complete,我的更改仍然会提交给数据库。如果现在不支持 TransactionScope,那么将来是否有计划支持它?如果没有那么你必须使用传统的事务管理(System.Transactions.Transaction)吗?

更新:我刚刚在 Twitter 上与 Sam 交谈过。它应该工作。明天早上(在工作中)我会更新它的细节,看看是否有人能弄清楚为什么我的更改仍然提交到数据库,即使我从未调用过完成。

4

1 回答 1

97

这完全是我的错,没有完全理解事务范围。除非您在事务范围内打开连接,否则连接不会自动加入事务范围:

自动入伍

  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 回答