.net中使用transactionScope连接oracle数据库,事务没有提交,但是数据还是被修改了

代码如下 try { using (TransactionScope scope=new TransactionScope()) { AddForSqlserver("insert into test values (1,'aaa')"); AddForOracle("insert into test values ('001','aaa',1)"); AddForOracle("insert into test values ('001','aaa')"); scope.Complete(); } } catch (Exception ex) { } 执行难第三条sql  会插入失败,sqlsqlver的数据时没有被插入的,但是第二条oracle的数据确被插入了。 private void AddForOracle(string sql) { using (var conn = new OracleConnection(str)) { conn.Open(); var cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.CommandType = CommandType.Text; try { int n = cmd.ExecuteNonQuery(); if (n <= 0) { throw new Exception("操作失败"); } } catch (Exception ex) { throw ex; } finally { cmd.Clone(); cmd.Dispose(); cmd = null; } } }
子衿沉夜
浏览 945回答 7
7回答

慕雪6442864

你给你的 cmd 设置 Transaction 属性。

ABOUTYOU

这个只是一个测试用例,实际上应用场景执行的操作资源的地方可能位于不同的网络节点上

12345678_0001

@大灰机: 所以你的问题是?不太明白。

GCT1015

@jone_e: 问题就是Oracle.DataAccess中提交数据时不能感知当前环境事务。
打开App,查看更多内容
随时随地看视频慕课网APP