ODP.NET - 禁用自动提交
ODP.NET - disable auto commit
有没有一种简单的方法可以在使用 ODP.NET 时禁用自动提交?我想使用 SET TRANSACTION 命令启动事务,而不是使用 Connection.BeginTransaction 和 TransactionScope。此外,我希望任何 DML 启动事务(如果尚未启动)但在我发出 COMMIT 命令之前不提交更改。我知道其他 Oracle 提供商(JDBC 或 Devart)支持此功能,但我想通过 ODP.NET.
实现相同的行为
我还发现私有字段可能在 ODP.NET 的托管版本中控制它,但它隐藏在物理连接的实现中,很难通过 OracleConnection 实例访问。在非托管版本中,此设置似乎也在 Oracle.DataAccess.dll 程序集之外。
使用 ODP.NET 禁用自动提交的唯一方法是使用 BeginTransaction/new TransactionScope。
您可以在 UI 中向您的用户明确表示自动提交在默认情况下处于启用状态,他们可以通过单击工具栏按钮等关闭自动提交,此时您可以使用一些选项调用 Begin Transaction您可以放置在属性或选项页面中。
这正是我们在查询中使用 Oracle 开发人员工具所做的 Window。
另一个可能需要研究的事情是匿名 PL/SQL 一次发送一个 SQL 语句块。
至于 "SET TRANSACTION",我不确定如果您已经完成 "BeginTransaction" 是否会产生影响,但如果是这种情况,您可以记录不支持此命令(我们将不得不在我们的查询中做同样的事情 window 如果是的话)。
如果您希望 ODP.NET 在未来的某个日期通过此功能得到增强,您可能需要在 ODP.NET 功能请求页面提出请求:
有没有一种简单的方法可以在使用 ODP.NET 时禁用自动提交?我想使用 SET TRANSACTION 命令启动事务,而不是使用 Connection.BeginTransaction 和 TransactionScope。此外,我希望任何 DML 启动事务(如果尚未启动)但在我发出 COMMIT 命令之前不提交更改。我知道其他 Oracle 提供商(JDBC 或 Devart)支持此功能,但我想通过 ODP.NET.
实现相同的行为我还发现私有字段可能在 ODP.NET 的托管版本中控制它,但它隐藏在物理连接的实现中,很难通过 OracleConnection 实例访问。在非托管版本中,此设置似乎也在 Oracle.DataAccess.dll 程序集之外。
使用 ODP.NET 禁用自动提交的唯一方法是使用 BeginTransaction/new TransactionScope。
您可以在 UI 中向您的用户明确表示自动提交在默认情况下处于启用状态,他们可以通过单击工具栏按钮等关闭自动提交,此时您可以使用一些选项调用 Begin Transaction您可以放置在属性或选项页面中。
这正是我们在查询中使用 Oracle 开发人员工具所做的 Window。
另一个可能需要研究的事情是匿名 PL/SQL 一次发送一个 SQL 语句块。
至于 "SET TRANSACTION",我不确定如果您已经完成 "BeginTransaction" 是否会产生影响,但如果是这种情况,您可以记录不支持此命令(我们将不得不在我们的查询中做同样的事情 window 如果是的话)。
如果您希望 ODP.NET 在未来的某个日期通过此功能得到增强,您可能需要在 ODP.NET 功能请求页面提出请求: