首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PetaPoco事务不回滚

PetaPoco事务不回滚
EN

Stack Overflow用户
提问于 2013-12-22 19:05:39
回答 1查看 2.4K关注 0票数 1

也许这是一个非常棘手的问题,因为我对处理PetaPoco事务相当陌生。使用PetaPoco作为microORM处理db事务所面临的问题是,如果我在事务的.Complete()方法之前抛出异常,则所有内容都将正确回滚,但如果在

代码语言:javascript
复制
Using scope As PetaPoco.Transaction = db.GetTransaction()
    ' try/catch here and if the db command fails transaction won't roll back

    scope.Complete()
End Using

如果其中一个db操作失败,事务不会回滚。我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-26 16:22:43

问题是我没有正确处理基于路径上截获的异常的“调用/不调用”-- scope.Complete()。特别是,我有一个布尔标记"rollBackTransaction“开始为false,然后更新为true,如果事务中的try/catch块在引发和异常中出现。最后我检查了一下:

代码语言:javascript
复制
                    If Not rollBackTransaction Then
                        scope.Complete()
                    End If

如果在关闭Using块之前没有调用TransactionScope (),那么西蒙维奇建议的.Complete将最终回滚一个事务。

现在,导致错误标志并因此每次调用scope.Complete()方法的原因是,在事务中,我调用了一个分区,它有自己的异常处理,因此不会在主事务块中引发异常,以正确更新"rollBackTransaction“标志。

我学到的是,如果在事务中使用try/catch,请确保调用的外部方法在失败时引发异常,并始终基于wich更新标志,您将调用scope.Complete()。

不管怎么说,西蒙,谢谢你指出我不知道的.NET特性似乎非常有用!想知道交易中还会包括什么.文件系统变更?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20732967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档