2009-02-15 6 views
1

Je l'objet de domaine suivant:NHibernate API Critères, les projections et les résultats

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; }  

} 

J'utilise Référentiels de Rhino.Commons. Je dois sélectionner la somme des valeurs pour quelques canaux pendant une certaine période. Ces valeurs doivent être classées par ID de canal. J'utilise la requête suivante (dans la méthode de dépôt):

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")); 

Et je reçois erreur à la dernière ligne, car cette requête renvoie pas une liste de numéros longs. Il retourne une liste d'objets comme celui-ci (il fonctionne avec elle):

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; 
    } 
} 

Ceci est parce que j'ai ajouté la projection Projections.GroupProperty (« Channel ») aux critères pour faire un groupe. Est-il possible de supprimer l'une des projections (Projections.GroupProperty ("Channel") de mon exemple) du resultset ou d'ajouter un groupement sans projection?

Répondre

Questions connexes