首页 文章

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

提问于
浏览
-2

错误:发生System.ArgumentException HResult = 0x80070057消息=对象类型System.Collections.Generic.List`1 [[System.Object,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]中没有映射存在已知的托管提供程序本机类型 . Source = StackTrace:

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”行发生错误 . 代码编译好了 . 模型中有一个列表,所以我不确定错误发生的原因 .

1 回答

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

    OR

    您也可以在之前的 _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());
    

相关问题