【问题标题】:Using TransactionScope with System.Data.OracleClient - TransactionAbortedException将 TransactionScope 与 System.Data.OracleClient 一起使用 - TransactionAbortedException
【发布时间】:2010-08-16 15:56:25
【问题描述】:

我的系统将一些数据写入 SQL Server DB (2008),稍后将其提取并进一步处理,然后再将其写入 Oracle (10g) DB。

我已经将我的 SQL Server 交互封装在 TransactionScope 中,但是当我尝试对我的 Oracle 交互进行同样的思考时,我得到一个 `TranactionAbortedException - “事务已中止”。

移除 TransactionScope,一切正常。

我总是可以恢复手动管理自己的交易,但我希望有一个简单的解决方案。

示例代码:

private static void OracleTest()
    {           
        using (TransactionScope ts = new TransactionScope())
        {
            using (OracleConnection conn = new OracleConnection(connString))
            {
                try
                {
                    using (OracleCommand cmd = new OracleCommand())
                    {
                        cmd.CommandText = "MyPackage.MyFunction";
                        cmd.CommandType = System.Data.CommandType.StoredProcedure;
                        cmd.Connection = conn;

                        OracleParameter param = cmd.Parameters.Add(new OracleParameter("field1_", "abc123"));

                        param = cmd.Parameters.Add(new OracleParameter("rs_", OracleType.Cursor));
                        param.Direction = System.Data.ParameterDirection.Output;
                        conn.Open();
                        using (OracleDataReader dr = cmd.ExecuteReader())
                        {

我没有发现任何建议您不能将 TransactionScopes 与 Oracle 一起使用,但正如您从我的示例中看到的那样,我们正处于第一个障碍(当我们打开连接时),所以很难看到我可能会出错的地方。

【问题讨论】:

    标签: c# transactions oracle10g transactionscope


    【解决方案1】:

    你可能想看看这个;我对 Oracle 10g 中的 TransactionScope 也不太满意:http://forums.oracle.com/forums/thread.jspa?messageID=4127323

    【讨论】:

      猜你喜欢
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多