参数arraylist中的空输出参数(企业库6)

时间:2013-11-20 21:14:44

标签: c# asp.net enterprise-library

尝试实施Enterprise Library v.6数据访问块。以前的代码(使用MS Application Blocks中的Sqlhelper)使用了SqlParameter数组,但这导致了很多问题。相反,在尝试捕获要与数据集一起返回的输出参数时,使用ArrayList在应用程序的所有其他EL 6更新方法上都能正常工作。

从存储过程(在命令级别显示)正确返回结果,但未正确捕获(在totalRecords = ...处为空)。有人有任何建议吗? (注意:使用command.parameter.add等是没有选项,必须通过以下设置解决)。提前谢谢。

    public InvitationQueueData GetVotersInvitationQueue(int surveyId, int pageNumber, int pageSize, out int totalRecords)
        {
            InvitationQueueData dataSet = new InvitationQueueData();

// Former code:
            //SqlParameter[] commandParameters = new SqlParameter[] 
            //{ new SqlParameter("@SurveyID", surveyId), 
            //    new SqlParameter("@CurrentPage", pageNumber), 
            //    new SqlParameter("@PageSize", pageSize), 
            //    new SqlParameter("@TotalRecords", SqlDbType.Int) };

            //commandParameters[3].Direction = ParameterDirection.Output;

//New code:    
            ArrayList commandParameters = new ArrayList();
            {
                commandParameters.Add(new SqlParameter("@TotalRecords", SqlDbType.Int){ Direction = ParameterDirection.Output }.SqlValue);
                commandParameters.Add(new SqlParameter("@SurveyId", surveyId).SqlValue);
                commandParameters.Add(new SqlParameter("@CurrentPage", pageNumber).SqlValue);
                commandParameters.Add(new SqlParameter("@PageSize", pageSize).SqlValue);
            }

            DbConnection.db.LoadDataSet("vts_spVoterInvitationQueueGetAll", dataSet, new string[] {"InvitationQueues"}, commandParameters.ToArray());

            totalRecords = Convert.ToInt32(commandParameters[0].ToString());

            return dataSet;
        }

0 个答案:

没有答案