Criterios de NHibernate API, proyecciones y resultados
-
23-08-2019 - |
Pregunta
Tengo el siguiente objeto de dominio:
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; }
}
Estoy usando repositorios de Rhino.Commons. Necesito seleccionar suma de los valores de algunos canales para un cierto período. Estos valores deben ser ordenados por ID del canal. Utilizo la siguiente consulta (en el método repositorio):
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"));
Y recibo de error en la última línea, porque esta consulta no devuelve una lista de números largos. Devuelve una lista de objetos de este tipo (que trabaja con él):
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;
}
}
Esto se debe a que he añadido Projections.GroupProperty ( "Canal") de proyección de criterios para hacer una agrupación. ¿Hay alguna manera de eliminar una de las proyecciones (Projections.GroupProperty ( "Canal") de mi muestra) a partir de resultados o añadir una agrupación sin proyección?
Solución
Este es un pendientes NHibernate tema .