Hi Adam,
The short answer is 'yes'. QueryOver behaves the same as ICriteria in this
example ... adding conditions to the query changes the query itself.
ICriteria has a corresponding CriteriaTransformer class which can be used to
clone the criteria for exactly this sort of thing. I'll have a think and
see if we need a QueryOverTransformer class to do something similar.
IQueryOver does allow you access to the underlying ICriteria, so one option
might be to do something like this:
var users =
mySession.QueryOver<User>()
...
.OrderBy(x => x.LastName).Asc
.Skip(page * pageSize)
.Take(pageSize);
var pagedUsers = users.List();
var count =
CriteriaTransformer.Clone(users.UnderlyingCriteria)
.ClearOrders()
.SetProjection(Projections.RowCount())
.UniqueResult<int>();
Hope that helps, and I'll see about getting a QueryOverTransformer (and
probably IQueryOver.ClearOrders()) added to NH.
Richard
--------------------------------------------------
From: "Schotime" <[email protected]>
Sent: Friday, February 12, 2010 9:45 PM
To: "nhusers" <[email protected]>
Subject: [nhusers] QueryOver issues
Was trying out the new QueryOver since Linq doesn't have fetch yet,
but i received a different response than expected.
var users =
MvcApplication.SessionFactory.GetCurrentSession()
.QueryOver<User>().Fetch(x=>x.Roles).Eager;
if (!_userSession.IsUserInRole(UserRoles.Superuser))
users = users.Where(x => x.Company == user.Company);
int count =
users.Select(Projections.Count("id")).UniqueResult<int>();
var pagedUsers = users.OrderBy(x =>
x.LastName).Asc.Skip(page * pageSize).Take(pageSize).List();
to which i receive this error
Column "Users.LastName" is invalid in the ORDER BY clause because it
is not contained in either an aggregate function or the GROUP BY
clause.
Now in linq this runs too queries but it looks like QueryOver doesn't
return the instance, but modifies the existing one. Is this correct?
Do i need to repeat some logic to get the count as well?
Adam
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.