I have the following domain object:
public class Data { public virtual int ID { get; set; } public virtual DateTime TimeStamp { get; set; } public virtual int Value { get; set; } public virtual Channel Channel { get; set; } }
I’m using Repositories from Rhino.Commons. I need to select sum of values for few channels for some period. These values should be ordered by channel ID. I use the following query (in repository method):
var criteria = DetachedCriteria.For<LiveData>() .Add(Restrictions.Le('TimeStamp', startDate)) .Add(Restrictions.Ge('TimeStamp', endDate)) .Add(Restrictions.InG<Channel>('Channel', channels)) .SetProjection(Projections.Sum('Value')) .SetProjection(Projections.GroupProperty('Channel')); long[] result = ReportAll<long>(criteria, Projections.ProjectionList(), Order.Asc('Channel'));
And I receive error at the last line because this query returns not a list of long numbers. It returns a list of objects like this (it works with it):
public class ResultValue { public virtual Channel Channel { get; set;} public virtual int Value { get; set; } public ResultValue() { } public ResultValue(int value, Channel channel) { this.Value = value; this.Channel = channel; } }
This is because I’ve added Projections.GroupProperty(‘Channel’) projection to criteria to do a grouping. Is there any way to remove one of projections (Projections.GroupProperty(‘Channel’) from my sample) from resultset or to add a grouping without projection?
This is a pending NHibernate issue.