Error: System.ArgumentException occurred
HResult=0x80070057
Message=No mapping exists from object type System.Collections.Generic.List`1[[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] to a known managed provider native type.
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
public class PatInsuListItem : ErrorInfo
{
public int Insuspan_I { get; set; }
public int Insu_Id { get; set; }
public string Date_From { get; set; }
public string Date_To { get; set; }
public string Group_Name { get; set; }
public string Short_Name { get; set; }
public string Note { get; set; }
public string Plan_Name { get; set; }
public string Insur_num { get; set; }
public string Touch_Date { get; set; }
public string Touch_By { get; set; }
public string InsuranceRankdescr { get; set; }
public string COBFlag { get; set; }
public string InsStatus { get; set; }
public int Alert { get; set; }
public string EndProcessIndicator { get; set; }
public string LinkedAuthFlag { get; set; }
}
public class PatEFInsuList : ErrorInfo
{
public PatEFInsuList() {
list = new List<PatInsuListItem>();
}
public List<PatInsuListItem> list ;
public int Count { get; set; }
}
var _patlist = new PatEFInsuList();
SqlParameter _count = new SqlParameter("@count", SqlDbType.Int) { Direction = System.Data.ParameterDirection.Output };
IList<object> _paramList = new List<object>();
_paramList.Add(new SqlParameter("@patientId", SqlDbType.Int) { Value = parms.PatientId });
_paramList.Add(new SqlParameter("@orderBy", SqlDbType.VarChar) { Value = parms.OrderBy });
_paramList.Add(new SqlParameter("@pageSize", SqlDbType.Int) { Value = parms.PageSize });
_paramList.Add(new SqlParameter("@pageIndex", SqlDbType.Int) { Value = parms.PageIndex });
_paramList.Add(new SqlParameter("@disallowedInsu", SqlDbType.VarChar) { Value = parms.DisallowedInsu });
_paramList.Add(new SqlParameter("@initialId", SqlDbType.Int) { Value = parms.InitialId });
_paramList.Add(new SqlParameter("@initialCOBFlag", SqlDbType.Bit) { Value = parms.InitialCOBFlag });
_paramList.Add(_count);
var _result = this.RepositoryContext.Database.SqlQuery<PatInsuListItem>("exec dbo.imc_Patient_RetrieveInsuranceCOBList @patientId, @orderBy, @pageSize, @pageIndex, @disallowedInsu, @initialId, @initialCOBFlag, @count OUT", _paramList);
_patlist.Count = _count.Value == null ? 0 : (int)_count.Value;
_patlist.list = _result.Select(t => new PatInsuListItem
{
Insuspan_I = t.Insuspan_I,
Insu_Id = t.Insu_Id,
Date_From = t.Date_From,
Date_To = t.Date_To,
Group_Name = t.Group_Name,
Short_Name = t.Short_Name,
Note = t.Note,
Plan_Name = t.Plan_Name,
Insur_num = t.Insur_num,
Touch_Date = t.Touch_Date,
Touch_By = t.Touch_By,
InsuranceRankdescr = t.InsuranceRankdescr,
COBFlag = t.COBFlag,
InsStatus = t.InsStatus,
Alert = t.Alert,
EndProcessIndicator = t.EndProcessIndicator,
LinkedAuthFlag = t.LinkedAuthFlag
}).ToList();
return _patlist;
Error is occurring on the 'ToList' line during runtime. The code compiles ok. The models have a list in it, so Im not sure why the error is happening.
Your problem is here:
IList<object> _paramList = new List<object>();
You can't pass in a List<object>
.
Try this instead:
var _result = this.RepositoryContext.Database.SqlQuery<PatInsuListItem>(
"exec dbo.imc_Patient_RetrieveInsuranceCOBList @patientId, @orderBy, @pageSize, @pageIndex, @disallowedInsu, @initialId, @initialCOBFlag, @count OUT",
new SqlParameter("@patientId" , SqlDbType.Int ) { Value = parms.PatientId },
new SqlParameter("@orderBy" , SqlDbType.VarChar) { Value = parms.OrderBy },
new SqlParameter("@pageSize" , SqlDbType.Int ) { Value = parms.PageSize },
new SqlParameter("@pageIndex" , SqlDbType.Int ) { Value = parms.PageIndex },
new SqlParameter("@disallowedInsu", SqlDbType.VarChar) { Value = parms.DisallowedInsu },
new SqlParameter("@initialId" , SqlDbType.Int ) { Value = parms.InitialId },
new SqlParameter("@initialCOBFlag", SqlDbType.Bit ) { Value = parms.InitialCOBFlag },
new SqlParameter("@count" , SqlDbType.Int ) { Value = _count } // this one you attempted to pass in just the int, not a SqlParameter
);
OR
You could alternatively call .ToArray()
on your previous _paramList
:
var _result = this.RepositoryContext.Database.SqlQuery<PatInsuListItem>(
"exec dbo.imc_Patient_RetrieveInsuranceCOBList @patientId, @orderBy, @pageSize, @pageIndex, @disallowedInsu, @initialId, @initialCOBFlag, @count OUT",
_paramList.ToArray());