我想从视图模型中将存储过程调用到ActionResult中。
当我尝试运行我的代码时出现错误
IndexOutOfRangeException由用户代码处理 - 位置0处没有行
这是一个新创建的表,并且是空的,但为什么不插入存储过程来插入数据?这是我的代码。
调用过程CreateSecureRequestOutcome
public static void CreateSecureRequestOutcome(
OracleTransaction trans,
dsAdmin.SECURE_REQUEST_OUTCOMESRow outcomeRow)
{
using (OracleCommand cm = new OracleCommand())
{
cm.Connection = trans.Connection;
cm.Transaction = trans;
cm.CommandText = "TheService.PKG#SECURE_REQUEST.SECURE_REQUEST_OUTCOME";
cm.CommandType = CommandType.StoredProcedure;
cm.AddToStatementCache = true;
OracleParameter param = cm.Paramaters.Add("P_KEEP_PERSON_ID", OracleDBType.Decimal, Paremeter.Direction.Input);
param.Value = keepPersonID;
param = cm.Paramaters.Add("P_SECURE_REQUEST_GUID", OracleDBType.Raw, 16, null, Paremeter.Direction.Input);
param.Value = outcomeRow.SECURE_REQUEST_GUID;
param = cm.Parameters.Add("P_OUTCOME_TIMESTAMP", OracleDBType.Object, Paremeter.Direction.Output);
}
}
cm.ExecuteNonQuery();
IdentityConfirmed ViewModel控制器
[httpPost]
public ActionResult IdentityConfirmed(FormCollection collection)
{
dsAdmin.SECURE_REQUESTS_OUTCOMESRow secReqOutRow;
using (OracleConnection cn = new OracleConnection (OracleConnectionManager.GetProxyServiceConnetionString()))
{
cn.Open();
using (OracleTransaction trans = cn.BeginTransaction())
{
using (Data.dsAdminTableAdapters.SECURE_REQUESTS_OUTCOMESTableAdapter taOut = new Data.dsAdminTableAdapters.SECURE_REQUESTS_OUTCOMESTableAdapter();
{
typedDatasetFiller.ApplyConnection(taOut, cn);
secReqOutRow = taOut.GetDataBySecureGUID(request.ToByteArray())[0];
}
secReqOutRow.OUTCOME_TIMESTAMP = DateTime.Now.AddMonths(1);
Support.CreateSecureRequestOutcome(trans, secReqOutRow);
trans.Commit();
}
cn.Close();
}
retrun View("IdentityConfirmed", vm);
}
答案 0 :(得分:1)
那么,你认为错误意味着什么呢?为什么不正确调试?
为简短起见,GetDataBySecureGUID
返回一个空数组,因此访问索引0无效。
请按以下方式更改您的代码:
var results = taOut.GetDataBySecureGUID(request.ToByteArray());
secReqOutRow = results[0];
现在将断点设置为第二行并检查results
的值。有多少元素?
我打赌没有,因为这正是异常的意思。您正尝试使用大于允许的最大索引的索引来访问集合中的元素。您尝试访问第一个元素并获取此错误的事实意味着没有第一个元素,因此集合中根本没有元素。