错误:值“System.Object[]”的类型不是“prjCustomerService.clsCustomer”,不

本文关键字:类型 prjCustomerService clsCustomer System Object 错误 | 更新日期: 2023-09-27 18:17:06

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" .

错误:值“System.Object[]”的类型不是“prjCustomerService.clsCustomer”,不

就我而言,我用来在QueryOverselect 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 System.Linq添加到 using 语句中。

通过此语句,您说必须过滤非通用 IQuery 以仅包含clsCustomer对象,然后使用 .到列表你说你想从中创建一个列表。