C#TransactionScope与OleDB和Oracle

多米尼克棉

我当前的应用程序将所有数据库操作都放在一个巨大的using语句中,并带有一个连接,以确保事务完全提交或回滚,当前,如果我有通用方法,它们将传递当前打开的OleDbConnection以便使用。

我想使用TransactionScope代替外部using部分。请在下面查看我的测试代码:

private void Test() {        
    string _connectionString = "Provider=OraOLEDB.Oracle.1;Password=XXXXXXXX;Persist Security Info=True;User ID=XXXXXXXX;Data Source=XXXXXXX;min pool size=1;incr pool size=5;decr pool size=2;connection timeout=60;";
    using (TransactionScope _ts = new TransactionScope(TransactionScopeOption.Required))
    {
        using (OleDbConnection _cn = new OleDbConnection(_connectionString))
        {
            _cn.Open(); // Errors Here!
            using (OleDbCommand _cmd = new OleDbCommand())
            {
                _cmd.Connection = _cn;
                _cmd.CommandText = "insert into testtable (TEST) values ('FIRST')";
                _cmd.CommandType = CommandType.Text;
                _cmd.ExecuteNonQuery();
            }
        }

        using (OleDbConnection _cn = new OleDbConnection(_connectionString))
        {
            _cn.Open();
            using (OleDbCommand _cmd = new OleDbCommand())
            {
                _cmd.Connection = _cn;
                _cmd.CommandText = "insert into testtable (TEST) values ('SECOND')";
                _cmd.CommandType = CommandType.Text;
                _cmd.ExecuteNonQuery();
            }
        }
    }
}

我收到的错误是“无法参加交易。” 我已经读到Oracle不喜欢使用TransactionScope(TransactionScope和Oracle的问题),但是它似乎符合我需要实现的目标。我发现关于如何跨连接池连接桥接单个事务的信息很少。

编辑-2月11日

我从OleDB切换到ODP.Net,并设法得到一个正式的Oracle ORA错误。

ORA-02048: attempt to begin distributed transaction without logging on

从我发现的可悲的是,我认为这是一个Oracle错误?我发现论坛帖子暗示10.2.0.2版存在此错误,但是我在10.2.0.4上吗?

希望有人可以帮忙!谢谢

多米尼克棉

因此,我的回答有两点:

首先,我需要在客户端上安装OracleMTS服务。其次,我从OleDB(通过Oracle.ManagedDataAccess v12)更改为Oracle.DataAccess v11,它可以正常工作!

我发现ODP.Net客户端的v12版本和10.2.0.4版本存在一个错误,即分布式事务失败,但是版本11可以运行。仍然感到困惑,为什么它不能与OleDB一起使用,但是我现在已经解决了。希望这可以帮助其他人担任我的职务!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EntityFramework,TransactionScope和SaveChange

来自分类常见问题

C#Access OleDB分别添加时间和日期

来自分类Dev

C#Access OleDB分别添加时间和日期

来自分类Dev

TransactionScope锁定表和IsolationLevel

来自分类Dev

Oledb和DATETIME的问题

来自分类Dev

与oledb和odbc混淆

来自分类Dev

Oledb和DATETIME的问题

来自分类Dev

Dapper + Oracle + TransactionScope =事务已中止

来自分类Dev

Parallel.Invoke(),TransactionScope()和SqlBulkCopy

来自分类Dev

Parallel.Invoke(),TransactionScope()和SqlBulkCopy

来自分类Dev

使用C#和OLEDB更新Excel文件-网络文件问题

来自分类Dev

Oledb和访问。应该使用内部联接还是C#循环?

来自分类Dev

从Excel到Oracle的OLEDB连接问题

来自分类Dev

不同类 C# 中的多个 TransactionScope

来自分类Dev

处置Transactionscope后,实体框架和Transactionscope不会还原隔离级别

来自分类Dev

嵌套存储过程中包含的TransactionScope和事务

来自分类Dev

易失性IEnlistmentNotification和TransactionScope.AsyncFlowEnabled = true

来自分类Dev

TransactionScope问题和EF6异步调用

来自分类Dev

微风-EF,TransactionScope和BeforeSaveEntities中的打开连接

来自分类Dev

嵌套存储过程中包含的TransactionScope和事务

来自分类Dev

SonarQube 和 Oracle 12C

来自分类Dev

从C#使用OleDB更新表行

来自分类Dev

C#OleDb插入到溢出异常

来自分类Dev

web.config中的oledb C#

来自分类Dev

在C#中使用oledb更新数据

来自分类Dev

C#OleDb sql“ UPDATE,WHERE”异常

来自分类Dev

从C#使用OleDB更新表行

来自分类Dev

“行/列的数据不存在。” 执行OLEDB Oracle OleDbDataReader

来自分类Dev

使用OleDb和Access处理dd / mm / yyyy日期格式

Related 相关文章

热门标签

归档