将数据集从 Oracle 传递到 C# 时出现指令指针错误

Passing a dataset from Oracle to C# gives me an instruction pointer error

我有以下 C# 代码块,用于将变量传递到 Oracle 12c 过程和 return 数据集:

    public void Show_Data()
    {
        try
        {
            OracleConnection conn = GetConnection();
            {
                conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnCST"].ToString();

                OracleCommand cmd3 = new OracleCommand();
                cmd3.CommandType = CommandType.StoredProcedure;
                cmd3.CommandText = "CST_FEEDBACK";
                cmd3.Connection = conn;

                cmd3.Parameters.Add("LineID", OracleType.Number).Value = hLineID.Value;
                cmd3.Parameters.Add("Emp_out", OracleType.Cursor).Direction = ParameterDirection.Output;

                //connection2.Open();

                var SearchAdapter = new OracleDataAdapter(cmd3);
                var ds = new DataSet();
                SearchAdapter.Fill(ds);

                ResponseRepeater.DataSource = ds;
                ResponseRepeater.DataBind();
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

    }

当代码到达行 var ds = new Dataset(); 时,它失败并显示以下消息:

Cannot obtain value of the local variable or argument because it is not available at this instruction pointer, possibly because it has been optimized away.

谁能告诉我这是什么意思and/or如何解决这个问题?

调试经过编译器优化的代码时经常出现此问题。

切换到生成配置 "Debug",或者如果它已经处于活动状态,则转到项目 -> 属性 -> 选项卡 [生成],查找 [x] 优化代码,然后取消选中它:

请尝试 Oracle 托管数据访问 dll(https://www.nuget.org/packages/Oracle.ManagedDataAccess/) for oracle connection. And use any oracle helper class(http://read.pudn.com/downloads153/sourcecode/windows/dotnet/671399/SQL%2BOleDb%2BOracle%2BNpg_helper/SqlHelper/OracleHelper.cs__.htm)。现在您可以正常使用 SQL 查询。

   OracleConnectionService OraCon = new OracleConnectionService();
            var cc = ConfigurationManager.ConnectionStrings["OracleProdContext"].ToString();
       OracleConnection _con = new OracleConnection(cc);
       OracleConnection = _con;
       TextCommandType = System.Data.CommandType.Text;
                     var resultSet = OracleHelper.ExecuteScalar(OraCon.OracleConnection, OraCon.TextCommandType, OracleQuery);
 var result = resultSet.Tables[0];

如果您想更改为 Collection,请使用一些通用的将 DataRow 转换为 Collection 的代码,这些代码在 Net 上可用。