繁体   English   中英

错误:值“ System.Object []”不是类型“ prjCustomerService.clsCustomer”,因此不能在此通用集合中使用。 参数名称:值

[英]Error:The value “System.Object[]” is not of type “prjCustomerService.clsCustomer” and cannot be used in this generic collection. Parameter name: value

public IList<CustomerData> StoredProcedure(int CID)
    {
        IList<CustomerData> lObjEmployees = new List<CustomerData>();
        NHibernate.Cfg.Configuration lObjConfig = new NHibernate.Cfg.Configuration();
        lObjConfig.AddAssembly("prjCustomerService");
        NHibernate.ISessionFactory lObjFactory = lObjConfig.BuildSessionFactory();
        NHibernate.ISession lObjSession = lObjFactory.OpenSession();
        NHibernate.IQuery lObjQuery = lObjSession.GetNamedQuery("Test1");
        lObjQuery.SetInt32("CID", @CID);
        IList<clsCustomer> lObjEmpList = lObjQuery.List<clsCustomer>();
        foreach (clsCustomer lObjCurrEmployee in lObjEmpList)
        {
            CustomerData lObjCurrEmpData = new CustomerData();
            lObjCurrEmpData.CID = lObjCurrEmployee.CID;
            lObjCurrEmpData.CName = lObjCurrEmployee.CName;
            lObjCurrEmpData.Cadd = lObjCurrEmployee.CAdd;
            lObjCurrEmpData.Ccontact = lObjCurrEmployee.CContact;
            lObjEmployees.Add(lObjCurrEmpData);
        }
     return lObjEmployees;
    }

这是我的WCF服务代码,在以下行出现错误:

IList<clsCustomer> lObjEmpList = lObjQuery.List<clsCustomer>();

值“ System.Object []”的类型不是“ prjCustomerService.clsCustomer”,因此不能在此通用集合中使用。

参数名称:值

Test1是我的存储过程,它返回一行CID="xyz"

就我而言,我用来在QueryOverselectalias与我实际“选择为”的alias不同:

查询(注意with alias ):

IndividualBugViewModel individualBugViewModelAlias = null;

IQueryOver<DomainModel.Models.Bug, DomainModel.Models.Bug> bugQueryOver = Repository
    .QueryOver(() => bugAlias)
    .SelectList(list => list.SelectGroup(() => bugAlias.Details).WithAlias(
                            () => individualBugViewModelAlias.Details)

结果:

var bugList = bugQueryOver.List() //Error!

因为在运行查询时,我没有传递将结果转换为的类类型,所以它将尝试将结果转换为DomainModel.Models.Bug类型,而不是IndividualBugViewModel类型。 这导致了错误。

所以我将其更改为:

var bugList = bugQueryOver.TransformUsing(Transformers.AliasToBean<IndividualBugViewModel>())
                 .List<IndividualBugViewModel>();

在您的情况下, named query<return class="className">必须与clsCustomer不兼容。

尝试:

IList<clsCustomer> lObjEmpList = lObjQuery.OfType<clsCustomer>.ToList();

记住要在您的using语句中添加using System.Linq

使用此语句,您说必须将非通用IQuery过滤为仅包含clsCustomer对象,然后使用.ToList表示要从中创建一个列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM