也许这是一个真正的小问题,因为我对于处理与PetaPoco的交易相当新。 问题我正在使用PATA作为一个microORM来处理我的数据库事务,如果我在事务的.Complete()方法之前抛出一个异常,所有事情都会正确回滚,但如果我在PetaPoco交易不回滚
内部捕获异常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
如果某个数据库操作失败,事务将不会回滚。我该如何解决这个问题?
我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –
我不熟悉PetaPoco交易。但是,快速查看PetaPoco的代码,事务管理在Microsoft环境中似乎很有趣并且坦率地说是无用的。你为什么不用一个标准的TransactionScope使用语句来包围你的事务代码(就像这样:http://msdn.microsoft.com/library/ee818746.aspx),它对于大多数标准数据库来说应该是正常的。 –
谢谢西蒙,我觉得petapoco在底层使用的是这个对象infact,即使是petapoco,你也不能“手动”回滚事务,但它的工作原理就像“如果你想回滚一个事务,你不应该调用Complete方法例如,你可以在范围内抛出异常,它参与的事务将被回滚。“ 但由于某种原因,我试图不叫.Compete(),但第一个数据库查询成功了相同。顺便说一句,我会给一个普通的.NET方法一个镜头,并在这里报告。 – Manight