결과 페이지를 표시하기 위해 사용하는 기준 쿼리가 있습니다. 또한 모든 항목의 총 수를 얻어야합니다. 그들은 .AddOrder()에서 떨어져 동일하기 때문에 (두 개의 쿼리 카운트에 대한 결과를 페이징에 대한 하나 하나가보다는 분명히 NHibernate 기준 쿼리에서 순서 제거
public ICriteria StandardQuery {
get {
return NHibernateSesssionManager.GetSession.CreateCriteria<Person>.AddOrder("OrderProperty", Order.Desc);
}
public ICriteria CountQuery {
get{
return StandardQuery.SetProjection(Projections.Count("ID"));
}
CountQuery는 ""열 "dbo.Person.ordercolumn로되어 barfs ORDER BY 절에서 무효가 집계 함수 나 GROUP BY 절 중 하나에 포함되지 않기 때문에. "
이 말이 그래서 기본적으로 나는 이런 식으로 뭔가를하고 싶어.
public ICriteria CountQuery {
get{
return StandardQuery.RemoveOrders().SetProjection(Projections.Count("ID"));
}
이 있습니까 이런 식으로하는 방법? 내가 구원 받았다. 두 개의 중복 쿼리 (하나는 페이징 용, 다른 하나는 카운트 용)의 "위험" 분명히 어느 쪽 쿼리에 대한 변경이라도 다른쪽에 반영되어야하며 이것은 내가 좋아하지 않을 위험입니다. 너는 무엇을 할 것이냐?
private ICriteria BaseQuery {
get {
return NHibernateSesssionManager.GetSession().CreateCriteria<Person>();
}
}
public ICriteria StandardQuery {
get {
return BaseQuery.AddOrder("OrderProperty", Order.Desc);
}
}
public ICriteria CountQuery {
get{
return BaseQuery.SetProjection(Projections.Count("ID"));
}
}
와우 NHibernate 친구들은 정말로 모든 것을 생각했습니다 !! 부끄러운 줄 모르는 "return StandardQuery.ClearOrders();" 왜 그들이 그렇게 한거야? – reach4thelasers