J'ai une requête de critère que j'utilise pour afficher les pages de résultats. J'ai également besoin d'obtenir le nombre total de tous les articles. Plutôt que d'avoir deux requêtes, l'une pour la pagination des résultats et un pour le nombre (car ils sont identiques en dehors de la .AddOrder()Suppression d'une commande de la requête de critères NHibernate
public ICriteria StandardQuery {
get {
return NHibernateSesssionManager.GetSession.CreateCriteria<Person>.AddOrder("OrderProperty", Order.Desc);
}
public ICriteria CountQuery {
get{
return StandardQuery.SetProjection(Projections.Count("ID"));
}
Il est évident que la CountQuery Barfs avec « colonne « dbo.Person.ordercolumn » est invalide dans la clause ORDER BY, car il ne figure pas dans une fonction d'agrégation ou la clause GROUP BY. »
cela est logique, donc en gros je veux faire quelque chose comme ça.
public ICriteria CountQuery {
get{
return StandardQuery.RemoveOrders().SetProjection(Projections.Count("ID"));
}
est-il une façon de faire quelque chose comme ça? Alors que je suis sauvé le "risque" d'avoir deux requêtes en double, une pour la pagination et une pour le compte. Il est clair que toute modification de l'une ou l'autre requête doit être reflétée de l'autre et c'est un risque que je n'aime pas. Qu'est-ce que tu ferais?
WOW les gars de NHibernate ont vraiment pensé à tout !! Dommage que je ne peux pas faire "return StandardQuery.ClearOrders();" Je me demande pourquoi ils l'ont fait comme ça ... – reach4thelasers