我最近扩展了一段代码,但现在必须使用事务。它看起来只能在事务中访问,但看起来并不让我感到舒服。我使用SQLite和ADO.NET编写了if(cmd.Transaction==null),但它在事务中为空。我该怎么检查?
注意:我将来会在TSQL中使用这段代码。这是一个使用SQLite的快速原型
-edit-我正在考虑嵌套事务,但这段代码生成了一段sql,并使用命令来添加参数。因此,添加嵌套事务需要进行大量修改。
发布于 2010-01-06 16:40:03
根据SQL的性质及其在应用程序中的适用性,嵌套事务可能更合适,无论调用的上下文如何,都要确保事务存在。
例如,您可以将调用代码包装在TransactionScope块中。如果存在事务,这将不会对操作产生实际影响。如果不存在事务,它将创建一个事务,并确保ADO.NET代码参与该事务。
只有当您乐于将SQL作为单个操作执行时,这种方法才有效。如果只将其作为较大事务的一部分进行调用,则此方法不起作用。
要确定事务是否存在,您必须检查ADO.NET命令上的显式事务(如上所述),并使用Transaction.Current属性检查System.Transactions编程模型中是否存在环境事务。
https://stackoverflow.com/questions/2011677
复制相似问题