code_junkie

How do I select the Count(*) of an nHibernate Subquery's results

Nov 11th, 2011
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. Select count(*) from
  2. (Select e.ID,e.Name from Object as e where...)
  3.  
  4. select count(*) from Object e where e = (Select distinct e.ID,e.Name from ...)
  5.  
  6. var session = GetSession();
  7. var criteria = session.CreateCriteria(typeof(Order))
  8. .Add(Restrictions.Eq("Product", product))
  9. .SetProjection(Projections.CountDistinct("Price"));
  10. return (int) criteria.UniqueResult();
  11.  
  12. public IList GetOrders(int pageindex, int pagesize)
  13. {
  14. IList results = session.CreateMultiQuery()
  15. .Add(session.CreateQuery("from Orders o").SetFirstResult(pageindex).SetMaxResults(pagesize))
  16. .Add(session.CreateQuery("select count(*) from Orders o"))
  17. .List();
  18. return results;
  19. }
  20.  
  21. [DataObjectMethod(DataObjectMethodType.Select)]
  22. public DataTable GetOrders(int startRowIndex, int maximumRows)
  23. {
  24. IList result = dao.GetOrders(startRowIndex, maximumRows);
  25. _count = Convert.ToInt32(((IList)result[1])[0]);
  26.  
  27. return DataTableFromIList((IList)result[0]); //Basically creates a DataTable from the IList of Orders
  28. }
  29.  
  30. IList results = session.CreateMultiQuery()
  31. .Add(session.CreateQuery("from Orders o").SetFirstResult(pageindex).SetMaxResults(pagesize))
  32. .Add(session.CreateQuery("select count(distinct e.Id) from Orders o where..."))
  33. .List();
  34. return results;
  35.  
  36. public IList GetOrders(int pageindex, int pagesize, out int total)
  37. {
  38. var results = session.CreateQuery().Add(session.CreateQuery("from Orders o").SetFirstResult(pageindex).SetMaxResults(pagesize));
  39.  
  40. var wCriteriaCount = (ICriteria)results.Clone());
  41.  
  42. wCriteriaCount.SetProjection(Projections.RowCount());
  43.  
  44. total = Convert.ToInt32(wCriteriaCount.UniqueResult());
  45.  
  46.  
  47. return results.List();
  48. }
  49.  
  50. int count = session.QueryOver<Orders>().RowCount();
Add Comment
Please, Sign In to add comment