我想要使用NHibernate版本v2.0.50727实现典型的分页和计数功能的NHibernate的多查询功能。使用NHibernate的多查询功能时遇到“未定义的别名或未知的映射”异常
我一直在遵循Ayende Rahien给出的here的例子,我的代码和它很相似。不过,每次它击中调用返回的结果列表,将抛出一个异常与线沿线的消息:
"undefined alias or unknown mapping: Shop [from Shop.dbo.Sales s where s.Customer = :customer_id and s.date between :start_date and :end_date order by s.date desc]"
下面是在代码中的步骤,其中出现问题:
IList queryResults = NHibernateSession.CreateMultiQuery()
.Add(dataQuery)
.Add(countQuery)
.List();
这里是代码的其余部分:
private IList <SalesDetails> GetSalesByCustomer(Customer customer, DateTime start, DateTime end, int pageIndex, int pageSize, out int TotalCount)
{
IQuery dataQuery = NHibernateSession.CreateQuery("from Shop.dbo.Sales s where s.Customer = :customer_id and s.date between :start_date and :end_date order by s.date desc");
dataQuery.SetInt32("customer_id", customer.ID);
dataQuery.SetParameter("start_date", start);
dataQuery.SetParameter("end_date", end);
dataQuery.SetFirstResult(pageIndex);
dataQuery.SetMaxResults(pageSize);
IQuery countQuery = NHibernateSession.CreateQuery("select count(*) from Shop.dbo.Sales s where s.Customer = :customer_id and s.date between :start_date and :end_date");
countQuery.SetInt32("customer_id", customer.ID);
countQuery.SetParameter("start_date", start);
countQuery.SetParameter("end_date", end);
IList queryResults = NHibernateSession.CreateMultiQuery()
.Add(dataQuery)
.Add(countQuery)
.List();
IList <SalesDetails> results = (IList <SalesDetails>) queryResults[0];
TotalCount = (int)((IList) queryResults[1])[0];
return results;
}
你需要提供映射这个工作?我不认为是这样,因为它被返回到一个通用列表,但如果是这样的话,你甚至会在Hibernate的映射文件,即hbm.xml文件中做这些事情?