C#学习教程:即使不调用System.Transactions.TransactionScope.Commit(),数据共享也会提交Transactions.TransactionScope代码即使抛出异常,最外层scope从不调用commit,代码仍然可以commit?using(vartx=newTransactionScope())包含一个顶级方法并调用也以相同方式使用TransactionScope的方法。我正在使用带有关联表适配器的类型化数据集。也许由于某种原因,适配器中的命令没有出现?你们中有人知道如何检查他们是否参与了环境的TransactionScope吗?答案原来是因为我在SqlConnection对象之后创建了TransactionScope对象。我留下了这个:using(newConnectionScope())using(vartransaction=newTransactionScope()){//做一些修改数据的事情。Complete();}对此:using(vartransaction=newTransactionScope())using(newConnectionScope()){//做一些修改数据的事情transaction.Complete();现在可以了!这个故事的寓意是首先创建您的TransactionScope。明显的情况是当明确指定新的(RequiresNew)/null(Suppress)事务时——但也有可能导致连接错过事务的超时/解除绑定失败。请参阅上一篇文章(修复只是更改连接字符串)或了解完整详细信息。请注意TransactionScope的工作原理:它在使用范围的开头设置属性System.Transactions.Transaction.Current,然后在使用范围的末尾将其设置回其先前的值。先前的值取决于声明给定范围的位置。它可以在另一个范围内。您可以这样修改代码:using(varsqlConnection=newConnectionScope())//做一些修改数据事务的事情。完全的();我向那些代码更复杂并且不能简单地更改代码以首先打开数据库连接的人展示这种可能性。以上是C#学习教程:即使不调用System.Transactions.TransactionScope.Commit(),也会提交数据共享的全部内容。如果对大家有用,需要进一步了解C#学习教程,还望大家多多关注~本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
