尝试实施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;
}