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

问题描述 投票:0回答:1
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;

运行时“ToList”行发生错误。代码编译正常。这些模型中有一个列表,所以我不确定为什么会发生错误。

c# entity-framework generics model
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
    );

您也可以致电

.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());
© www.soinside.com 2019 - 2024. All rights reserved.