错误:值“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"
.
就我而言,我用来在QueryOver
中select
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
对象,然后使用 .到列表你说你想从中创建一个列表。