[英]The value “CitiesDomain.Cities” is not of type “CitiesDomain.Cities” and cannot be used in this generic collection. Parameter name: value
[英]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"
。
就我而言,我用来在QueryOver
中select
的alias
与我实际“选择为”的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.