与Oracle一起使用的MVC3使用ADO.NET可能是使用IEnumerable的一种好方法

|| 我正在将Web窗体应用程序转换为mvc3,对于当前数据库,它正在调用asmx Web服务并返回数据集。由于我正在重建大量的应用程序,因此我确实不需要或不希望使用数据集。实体框架对于老板等人来说是不可能的。因此,这是现有类型的Oracle代码,它返回3个前导符,从而导致数据集中包含3个数据表。这是现有的代码:
    connection = new OracleConnection(EnvironmentSettings.connectionString);
            connection.Open();

            command = new OracleCommand(\"H16B.WEB_FACILITY.get_facility_queue\", connection);
            command.CommandType = CommandType.StoredProcedure;

            // Input Parameters
            command.Parameters.Add(\"pfacility\", OracleDbType.Varchar2, facilityCode, ParameterDirection.Input);
            // Output Parameters
            command.Parameters.Add(\"pqueue\", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
            command.Parameters.Add(\"psubmitting\", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
            command.Parameters.Add(\"psubmitted\", OracleDbType.RefCursor).Direction = ParameterDirection.Output;

            adapter = new OracleDataAdapter(command);
            DataSet ds = new DataSet();
            adapter.Fill(ds);
所以我想做的是代替使用数据集,而使用List或IEnumerable的集合。谁能告诉我如何将数据捕获到列表中(如果我要3个列表,当前的web方法输出是一个数据集。在此先感谢。     
已邀请:
        如果使用Command.ExecuteNonQuery(),则每个引用游标参数应包含一个值,该值可以是OracleDataReader或OracleRefCursor,具体取决于该参数的内部设置。 因此,您应该可以从以下内容开始:
IDataReader queueReader = (IDataReader)command.Parameters[\"pqueue\"].Value;
如果原来是OracleRefCursor,则可以在其上使用GetDataReader以达到相同的效果。 由于在这种情况下内容很简单,因此您可以直接将其转换为IEnumerable;否则,您可能需要填写通用列表或集合。     

bab

        使用数据集表中的DefaulViews,它们实现IEnumberable。 关于msdn文档中的Dataview: \'表示用于排序,过滤,搜索,编辑和导航的DataTable的可绑定数据的自定义视图。 更新:如果您想直接使用集合作为输出,请访问此站点(尽管格式很糟:: /) 正如您在文章中所看到的,您还必须在Oracle过程中进行一些更改。例如,如果要使用plsql关联数组,则输出参数不能是refcursors,而必须是plsql表。     

要回复问题请先登录注册