ODP.. NET -禁用自动提交

本文关键字:提交 NET ODP | 更新日期: 2023-09-27 18:17:58

是否有一个简单的方法来禁用自动提交时使用ODP.NET?我想使用SET TRANSACTION命令启动事务,而不是使用Connection。BeginTransaction也不是TransactionScope。此外,我希望任何DML启动事务(如果尚未启动),但不提交更改,直到我发出commit命令。我知道其他Oracle提供程序(JDBC或Devart)支持此功能,但我希望在ODP.NET中实现相同的行为。

我还发现在ODP的托管版本中有一个私有字段可能控制着它。但它隐藏在物理连接的实现中,很难通过oraclecconnection实例访问。在非托管版本中,此设置似乎也在Oracle.DataAccess.dll程序集之外。

ODP.. NET -禁用自动提交

使用ODP禁用自动提交的唯一方法。. NET将使用BeginTransaction/new TransactionScope。

你可以在你的UI中让你的用户清楚,自动提交是默认开启的,他们可以通过点击工具栏按钮等来关闭它,这时你可以使用一些你可以放在属性或选项页面中的选项来调用开始交易。

这正是我们在查询窗口中使用Oracle开发人员工具所做的。

另一个可以研究的是匿名PL/SQL,用于一次性发送SQL语句块。

至于"SET TRANSACTION",我不确定它是否会有影响,如果你已经做了一个"BeginTransaction",但你可以证明这个命令是不支持的,如果是这样的话(我们必须在我们的查询窗口中做同样的事情,如果是这样的话)。

如果你想要ODP。NET在将来的某个日期使用此特性进行增强时,您可能希望在ODP上提交请求。. NET特性请求页:

http://apex.oracle.com/pls/apex/f?p=18357:46