对象类型 System.collections.Generic.List 不存在映射

No mapping exists from object type System.collections.Generic.List

错误:发生 System.ArgumentException HResult=0x80070057 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' 行发生错误。代码编译正常。模型中有一个列表,所以我不确定为什么会发生错误。

您的问题在这里:

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
    );

您也可以在之前的 _paramList:

上调用 .ToArray()
    var _result = this.RepositoryContext.Database.SqlQuery<PatInsuListItem>("exec dbo.imc_Patient_RetrieveInsuranceCOBList  @patientId, @orderBy, @pageSize, @pageIndex, @disallowedInsu, @initialId, @initialCOBFlag, @count OUT",
                 _paramList.ToArray());