错误:发生了System.ArgumentException 的HResult = 80070057 Message =没有从对象类型System.Collections.Generic.List`1 [[System.Object,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]到已知托管提供程序本机类型的映射。 来源= 堆栈跟踪:
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;
运行时期间'ToList'行发生错误。代码编译好了。模型中有一个列表,所以我不确定错误发生的原因。
答案 0 :(得分:1)
你的问题在这里:
IList<object> _paramList = new List<object>();
您无法通过List<object>
请改为尝试:
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
);
或强>
您也可以在之前的.ToArray()
上致电_paramList
:
var _result = this.RepositoryContext.Database.SqlQuery<PatInsuListItem>("exec dbo.imc_Patient_RetrieveInsuranceCOBList @patientId, @orderBy, @pageSize, @pageIndex, @disallowedInsu, @initialId, @initialCOBFlag, @count OUT",
_paramList.ToArray());